mirror of https://github.com/acidanthera/audk.git
257 lines
6.8 KiB
C
257 lines
6.8 KiB
C
/** @file
|
|
Definitions of RedfishHttpData
|
|
|
|
Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#ifndef EDKII_REDFISH_HTTP_DATA_H_
|
|
#define EDKII_REDFISH_HTTP_DATA_H_
|
|
|
|
#include "RedfishHttpDxe.h"
|
|
|
|
#define REDFISH_HTTP_DRIVER_SIGNATURE SIGNATURE_32 ('r', 'f', 'h', 'p')
|
|
#define REDFISH_HTTP_CACHE_SIGNATURE SIGNATURE_32 ('r', 'f', 'c', 'h')
|
|
#define REDFISH_HTTP_SERVICE_SIGNATURE SIGNATURE_32 ('r', 'f', 's', 'v')
|
|
#define REDFISH_HTTP_PAYLOAD_SIGNATURE SIGNATURE_32 ('r', 'f', 'p', 'l')
|
|
#define REDFISH_HTTP_BASIC_AUTH_STR "Basic "
|
|
|
|
///
|
|
/// REDFISH_SERVICE_PRIVATE definition.
|
|
///
|
|
typedef struct {
|
|
UINT32 Signature;
|
|
CHAR8 *Host;
|
|
CHAR8 *HostName;
|
|
CHAR8 *BasicAuth;
|
|
CHAR8 *SessionToken;
|
|
EFI_REST_EX_PROTOCOL *RestEx;
|
|
} REDFISH_SERVICE_PRIVATE;
|
|
|
|
///
|
|
/// REDFISH_PAYLOAD_PRIVATE definition.
|
|
///
|
|
typedef struct {
|
|
UINT32 Signature;
|
|
REDFISH_SERVICE_PRIVATE *Service;
|
|
EDKII_JSON_VALUE JsonValue;
|
|
} REDFISH_PAYLOAD_PRIVATE;
|
|
|
|
///
|
|
/// Definition of REDFISH_HTTP_CACHE_DATA
|
|
///
|
|
typedef struct {
|
|
UINT32 Signature;
|
|
LIST_ENTRY List;
|
|
EFI_STRING Uri;
|
|
UINTN HitCount;
|
|
REDFISH_RESPONSE *Response;
|
|
} REDFISH_HTTP_CACHE_DATA;
|
|
|
|
#define REDFISH_HTTP_CACHE_FROM_LIST(a) CR (a, REDFISH_HTTP_CACHE_DATA, List, REDFISH_HTTP_CACHE_SIGNATURE)
|
|
|
|
///
|
|
/// Definition of REDFISH_HTTP_CACHE_LIST
|
|
///
|
|
typedef struct {
|
|
LIST_ENTRY Head;
|
|
UINTN Count;
|
|
UINTN Capacity;
|
|
} REDFISH_HTTP_CACHE_LIST;
|
|
|
|
///
|
|
/// Definition of REDFISH_HTTP_RETRY_SETTING
|
|
///
|
|
typedef struct {
|
|
UINT16 MaximumRetryGet;
|
|
UINT16 MaximumRetryPut;
|
|
UINT16 MaximumRetryPost;
|
|
UINT16 MaximumRetryPatch;
|
|
UINT16 MaximumRetryDelete;
|
|
UINTN RetryWait;
|
|
} REDFISH_HTTP_RETRY_SETTING;
|
|
|
|
///
|
|
/// Definition of REDFISH_HTTP_CACHE_PRIVATE
|
|
///
|
|
typedef struct {
|
|
UINT32 Signature;
|
|
EFI_HANDLE ImageHandle;
|
|
BOOLEAN CacheDisabled;
|
|
EFI_EVENT NotifyEvent;
|
|
REDFISH_HTTP_CACHE_LIST CacheList;
|
|
EDKII_REDFISH_HTTP_PROTOCOL Protocol;
|
|
EDKII_REDFISH_CREDENTIAL_PROTOCOL *CredentialProtocol;
|
|
REDFISH_HTTP_RETRY_SETTING RetrySetting;
|
|
} REDFISH_HTTP_CACHE_PRIVATE;
|
|
|
|
#define REDFISH_HTTP_CACHE_PRIVATE_FROM_THIS(a) CR (a, REDFISH_HTTP_CACHE_PRIVATE, Protocol, REDFISH_HTTP_DRIVER_SIGNATURE)
|
|
|
|
/**
|
|
Search on given ListHeader for given URI string.
|
|
|
|
@param[in] ListHeader Target list to search.
|
|
@param[in] Uri Target URI to search.
|
|
|
|
@retval REDFISH_HTTP_CACHE_DATA Target cache data is found.
|
|
@retval NULL No cache data with given URI is found.
|
|
|
|
**/
|
|
REDFISH_HTTP_CACHE_DATA *
|
|
FindHttpCacheData (
|
|
IN LIST_ENTRY *ListHeader,
|
|
IN EFI_STRING Uri
|
|
);
|
|
|
|
/**
|
|
This function copy the data in SrcResponse to DstResponse.
|
|
|
|
@param[in] SrcResponse Source Response to copy.
|
|
@param[out] DstResponse Destination Response.
|
|
|
|
@retval EFI_SUCCESS Response is copied successfully.
|
|
@retval Others Error occurs.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
CopyRedfishResponse (
|
|
IN REDFISH_RESPONSE *SrcResponse,
|
|
OUT REDFISH_RESPONSE *DstResponse
|
|
);
|
|
|
|
/**
|
|
Release all cache from list.
|
|
|
|
@param[in] CacheList The list to be released.
|
|
|
|
@retval EFI_SUCCESS All cache data are released.
|
|
@retval EFI_INVALID_PARAMETER CacheList is NULL.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
ReleaseCacheList (
|
|
IN REDFISH_HTTP_CACHE_LIST *CacheList
|
|
);
|
|
|
|
/**
|
|
Add new cache by given URI and HTTP response to specify List.
|
|
|
|
@param[in] List Target cache list to add.
|
|
@param[in] Uri The URI string matching to this cache data.
|
|
@param[in] Response HTTP response.
|
|
|
|
@retval EFI_SUCCESS Cache data is added.
|
|
@retval Others Fail to add cache data.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
AddHttpCacheData (
|
|
IN REDFISH_HTTP_CACHE_LIST *List,
|
|
IN EFI_STRING Uri,
|
|
IN REDFISH_RESPONSE *Response
|
|
);
|
|
|
|
/**
|
|
Delete a cache data by given cache instance.
|
|
|
|
@param[in] List Target cache list to be removed.
|
|
@param[in] Data Pointer to the instance to be deleted.
|
|
|
|
@retval EFI_SUCCESS Cache data is removed.
|
|
@retval Others Fail to remove cache data.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
DeleteHttpCacheData (
|
|
IN REDFISH_HTTP_CACHE_LIST *List,
|
|
IN REDFISH_HTTP_CACHE_DATA *Data
|
|
);
|
|
|
|
/**
|
|
This function release Redfish Payload.
|
|
|
|
@param[in] Payload Pointer to payload instance.
|
|
|
|
@retval EFI_SUCCESS Payload is released.
|
|
@retval Others Error occurs.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
ReleaseRedfishPayload (
|
|
IN REDFISH_PAYLOAD_PRIVATE *Payload
|
|
);
|
|
|
|
/**
|
|
This function creat new payload. Server and JsonObj are
|
|
copied to newly created payload.
|
|
|
|
@param[in] Service Pointer to Service instance.
|
|
@param[in] JsonObj Pointer to JSON object.
|
|
|
|
@retval REDFISH_PAYLOAD_PRIVATE Newly created payload.
|
|
@retval NULL Error occurs.
|
|
|
|
**/
|
|
REDFISH_PAYLOAD_PRIVATE *
|
|
CreateRedfishPayload (
|
|
IN REDFISH_SERVICE_PRIVATE *Service,
|
|
IN EDKII_JSON_VALUE JsonValue
|
|
);
|
|
|
|
/**
|
|
This function release Redfish Service.
|
|
|
|
@param[in] Service Pointer to service instance.
|
|
|
|
@retval EFI_SUCCESS Service is released.
|
|
@retval Others Error occurs.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
ReleaseRedfishService (
|
|
IN REDFISH_SERVICE_PRIVATE *Service
|
|
);
|
|
|
|
/**
|
|
This function creat new service. Host and HostName are copied to
|
|
newly created service instance.
|
|
|
|
@param[in] Host Host string.
|
|
@param[in] HostName Hostname string.
|
|
@param[in] BasicAuth Basic Authorization string.
|
|
@param[in] SessionToken Session token string.
|
|
@param[in] RestEx Rest EX protocol instance.
|
|
|
|
@retval REDFISH_PAYLOAD_PRIVATE Newly created service.
|
|
@retval NULL Error occurs.
|
|
|
|
**/
|
|
REDFISH_SERVICE_PRIVATE *
|
|
CreateRedfishService (
|
|
IN CHAR8 *Host,
|
|
IN CHAR8 *HostName,
|
|
IN CHAR8 *BasicAuth OPTIONAL,
|
|
IN CHAR8 *SessionToken OPTIONAL,
|
|
IN EFI_REST_EX_PROTOCOL *RestEx
|
|
);
|
|
|
|
/**
|
|
This function update session token in Redfish Service.
|
|
|
|
@param[in] Service Pointer to service instance.
|
|
@param[in] Token Session token.
|
|
|
|
@retval EFI_SUCCESS Session token is updated.
|
|
@retval Others Error occurs.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
UpdateSessionToken (
|
|
IN REDFISH_SERVICE_PRIVATE *Service,
|
|
IN CHAR8 *Token
|
|
);
|
|
|
|
#endif
|