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 | ///
|
---|
24 | typedef 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 | ///
|
---|
36 | typedef 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 | ///
|
---|
45 | typedef 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 | ///
|
---|
58 | typedef 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 | ///
|
---|
67 | typedef 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 | ///
|
---|
79 | typedef 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 | **/
|
---|
102 | REDFISH_HTTP_CACHE_DATA *
|
---|
103 | FindHttpCacheData (
|
---|
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 | **/
|
---|
118 | EFI_STATUS
|
---|
119 | CopyRedfishResponse (
|
---|
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 | **/
|
---|
133 | EFI_STATUS
|
---|
134 | ReleaseCacheList (
|
---|
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 | **/
|
---|
149 | EFI_STATUS
|
---|
150 | AddHttpCacheData (
|
---|
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 | **/
|
---|
166 | EFI_STATUS
|
---|
167 | DeleteHttpCacheData (
|
---|
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 | **/
|
---|
181 | EFI_STATUS
|
---|
182 | ReleaseRedfishPayload (
|
---|
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 | **/
|
---|
197 | REDFISH_PAYLOAD_PRIVATE *
|
---|
198 | CreateRedfishPayload (
|
---|
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 | **/
|
---|
212 | EFI_STATUS
|
---|
213 | ReleaseRedfishService (
|
---|
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 | **/
|
---|
231 | REDFISH_SERVICE_PRIVATE *
|
---|
232 | CreateRedfishService (
|
---|
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 | **/
|
---|
250 | EFI_STATUS
|
---|
251 | UpdateSessionToken (
|
---|
252 | IN REDFISH_SERVICE_PRIVATE *Service,
|
---|
253 | IN CHAR8 *Token
|
---|
254 | );
|
---|
255 |
|
---|
256 | #endif
|
---|