VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/RedfishPkg/RedfishHttpDxe/RedfishHttpData.h

Last change on this file was 105670, checked in by vboxsync, 7 months ago

Devices/EFI/FirmwareNew: Merge edk2-stable-202405 and make it build on aarch64, bugref:4643

  • Property svn:eol-style set to native
File size: 6.6 KB
Line 
1/** @file
2 Definitions of RedfishHttpData
3
4 Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
5
6 SPDX-License-Identifier: BSD-2-Clause-Patent
7
8**/
9
10#ifndef EDKII_REDFISH_HTTP_DATA_H_
11#define EDKII_REDFISH_HTTP_DATA_H_
12
13#include "RedfishHttpDxe.h"
14
15#define REDFISH_HTTP_DRIVER_SIGNATURE SIGNATURE_32 ('r', 'f', 'h', 'p')
16#define REDFISH_HTTP_CACHE_SIGNATURE SIGNATURE_32 ('r', 'f', 'c', 'h')
17#define REDFISH_HTTP_SERVICE_SIGNATURE SIGNATURE_32 ('r', 'f', 's', 'v')
18#define REDFISH_HTTP_PAYLOAD_SIGNATURE SIGNATURE_32 ('r', 'f', 'p', 'l')
19#define REDFISH_HTTP_BASIC_AUTH_STR "Basic "
20
21///
22/// REDFISH_SERVICE_PRIVATE definition.
23///
24typedef struct {
25 UINT32 Signature;
26 CHAR8 *Host;
27 CHAR8 *HostName;
28 CHAR8 *BasicAuth;
29 CHAR8 *SessionToken;
30 EFI_REST_EX_PROTOCOL *RestEx;
31} REDFISH_SERVICE_PRIVATE;
32
33///
34/// REDFISH_PAYLOAD_PRIVATE definition.
35///
36typedef struct {
37 UINT32 Signature;
38 REDFISH_SERVICE_PRIVATE *Service;
39 EDKII_JSON_VALUE JsonValue;
40} REDFISH_PAYLOAD_PRIVATE;
41
42///
43/// Definition of REDFISH_HTTP_CACHE_DATA
44///
45typedef struct {
46 UINT32 Signature;
47 LIST_ENTRY List;
48 EFI_STRING Uri;
49 UINTN HitCount;
50 REDFISH_RESPONSE *Response;
51} REDFISH_HTTP_CACHE_DATA;
52
53#define REDFISH_HTTP_CACHE_FROM_LIST(a) CR (a, REDFISH_HTTP_CACHE_DATA, List, REDFISH_HTTP_CACHE_SIGNATURE)
54
55///
56/// Definition of REDFISH_HTTP_CACHE_LIST
57///
58typedef struct {
59 LIST_ENTRY Head;
60 UINTN Count;
61 UINTN Capacity;
62} REDFISH_HTTP_CACHE_LIST;
63
64///
65/// Definition of REDFISH_HTTP_RETRY_SETTING
66///
67typedef struct {
68 UINT16 MaximumRetryGet;
69 UINT16 MaximumRetryPut;
70 UINT16 MaximumRetryPost;
71 UINT16 MaximumRetryPatch;
72 UINT16 MaximumRetryDelete;
73 UINTN RetryWait;
74} REDFISH_HTTP_RETRY_SETTING;
75
76///
77/// Definition of REDFISH_HTTP_CACHE_PRIVATE
78///
79typedef struct {
80 UINT32 Signature;
81 EFI_HANDLE ImageHandle;
82 BOOLEAN CacheDisabled;
83 EFI_EVENT NotifyEvent;
84 REDFISH_HTTP_CACHE_LIST CacheList;
85 EDKII_REDFISH_HTTP_PROTOCOL Protocol;
86 EDKII_REDFISH_CREDENTIAL_PROTOCOL *CredentialProtocol;
87 REDFISH_HTTP_RETRY_SETTING RetrySetting;
88} REDFISH_HTTP_CACHE_PRIVATE;
89
90#define REDFISH_HTTP_CACHE_PRIVATE_FROM_THIS(a) CR (a, REDFISH_HTTP_CACHE_PRIVATE, Protocol, REDFISH_HTTP_DRIVER_SIGNATURE)
91
92/**
93 Search on given ListHeader for given URI string.
94
95 @param[in] ListHeader Target list to search.
96 @param[in] Uri Target URI to search.
97
98 @retval REDFISH_HTTP_CACHE_DATA Target cache data is found.
99 @retval NULL No cache data with given URI is found.
100
101**/
102REDFISH_HTTP_CACHE_DATA *
103FindHttpCacheData (
104 IN LIST_ENTRY *ListHeader,
105 IN EFI_STRING Uri
106 );
107
108/**
109 This function copy the data in SrcResponse to DstResponse.
110
111 @param[in] SrcResponse Source Response to copy.
112 @param[out] DstResponse Destination Response.
113
114 @retval EFI_SUCCESS Response is copied successfully.
115 @retval Others Error occurs.
116
117**/
118EFI_STATUS
119CopyRedfishResponse (
120 IN REDFISH_RESPONSE *SrcResponse,
121 OUT REDFISH_RESPONSE *DstResponse
122 );
123
124/**
125 Release all cache from list.
126
127 @param[in] CacheList The list to be released.
128
129 @retval EFI_SUCCESS All cache data are released.
130 @retval EFI_INVALID_PARAMETER CacheList is NULL.
131
132**/
133EFI_STATUS
134ReleaseCacheList (
135 IN REDFISH_HTTP_CACHE_LIST *CacheList
136 );
137
138/**
139 Add new cache by given URI and HTTP response to specify List.
140
141 @param[in] List Target cache list to add.
142 @param[in] Uri The URI string matching to this cache data.
143 @param[in] Response HTTP response.
144
145 @retval EFI_SUCCESS Cache data is added.
146 @retval Others Fail to add cache data.
147
148**/
149EFI_STATUS
150AddHttpCacheData (
151 IN REDFISH_HTTP_CACHE_LIST *List,
152 IN EFI_STRING Uri,
153 IN REDFISH_RESPONSE *Response
154 );
155
156/**
157 Delete a cache data by given cache instance.
158
159 @param[in] List Target cache list to be removed.
160 @param[in] Data Pointer to the instance to be deleted.
161
162 @retval EFI_SUCCESS Cache data is removed.
163 @retval Others Fail to remove cache data.
164
165**/
166EFI_STATUS
167DeleteHttpCacheData (
168 IN REDFISH_HTTP_CACHE_LIST *List,
169 IN REDFISH_HTTP_CACHE_DATA *Data
170 );
171
172/**
173 This function release Redfish Payload.
174
175 @param[in] Payload Pointer to payload instance.
176
177 @retval EFI_SUCCESS Payload is released.
178 @retval Others Error occurs.
179
180**/
181EFI_STATUS
182ReleaseRedfishPayload (
183 IN REDFISH_PAYLOAD_PRIVATE *Payload
184 );
185
186/**
187 This function creat new payload. Server and JsonObj are
188 copied to newly created payload.
189
190 @param[in] Service Pointer to Service instance.
191 @param[in] JsonObj Pointer to JSON object.
192
193 @retval REDFISH_PAYLOAD_PRIVATE Newly created payload.
194 @retval NULL Error occurs.
195
196**/
197REDFISH_PAYLOAD_PRIVATE *
198CreateRedfishPayload (
199 IN REDFISH_SERVICE_PRIVATE *Service,
200 IN EDKII_JSON_VALUE JsonValue
201 );
202
203/**
204 This function release Redfish Service.
205
206 @param[in] Service Pointer to service instance.
207
208 @retval EFI_SUCCESS Service is released.
209 @retval Others Error occurs.
210
211**/
212EFI_STATUS
213ReleaseRedfishService (
214 IN REDFISH_SERVICE_PRIVATE *Service
215 );
216
217/**
218 This function creat new service. Host and HostName are copied to
219 newly created service instance.
220
221 @param[in] Host Host string.
222 @param[in] HostName Hostname string.
223 @param[in] BasicAuth Basic Authorization string.
224 @param[in] SessionToken Session token string.
225 @param[in] RestEx Rest EX protocol instance.
226
227 @retval REDFISH_PAYLOAD_PRIVATE Newly created service.
228 @retval NULL Error occurs.
229
230**/
231REDFISH_SERVICE_PRIVATE *
232CreateRedfishService (
233 IN CHAR8 *Host,
234 IN CHAR8 *HostName,
235 IN CHAR8 *BasicAuth OPTIONAL,
236 IN CHAR8 *SessionToken OPTIONAL,
237 IN EFI_REST_EX_PROTOCOL *RestEx
238 );
239
240/**
241 This function update session token in Redfish Service.
242
243 @param[in] Service Pointer to service instance.
244 @param[in] Token Session token.
245
246 @retval EFI_SUCCESS Session token is updated.
247 @retval Others Error occurs.
248
249**/
250EFI_STATUS
251UpdateSessionToken (
252 IN REDFISH_SERVICE_PRIVATE *Service,
253 IN CHAR8 *Token
254 );
255
256#endif
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette