TianoCore EDK2 master
Loading...
Searching...
No Matches
RedfishHttpDxe.c File Reference

Go to the source code of this file.

Functions

EFI_STATUS DebugPrintHttpCacheList (IN CONST CHAR8 *Msg, IN UINTN ErrorLevel, IN REDFISH_HTTP_CACHE_LIST *CacheList)
 
BOOLEAN RedfishRetryRequired (IN EFI_HTTP_STATUS_CODE *StatusCode)
 
BOOLEAN RedfishSuccessResponse (IN EFI_HTTP_METHOD Method, IN EFI_HTTP_STATUS_CODE *StatusCode)
 
CHAR8 * StringUnicodeToAscii (IN EFI_STRING UnicodeStr)
 
CHAR8 * HttpMethodToString (IN EFI_HTTP_METHOD Method)
 
VOID ReportHttpError (IN EFI_HTTP_METHOD Method, IN EFI_STRING Uri, IN EFI_HTTP_STATUS_CODE *HttpStatusCode OPTIONAL)
 
REDFISH_SERVICE EFIAPI RedfishCreateRedfishService (IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_CONFIG_SERVICE_INFORMATION *RedfishConfigServiceInfo)
 
EFI_STATUS EFIAPI RedfishFreeRedfishService (IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_SERVICE RedfishService)
 
EDKII_JSON_VALUE EFIAPI RedfishJsonInRedfishPayload (IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_PAYLOAD RedfishPayload)
 
EFI_STATUS EFIAPI RedfishGetResource (IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_SERVICE Service, IN EFI_STRING Uri, IN REDFISH_REQUEST *Request OPTIONAL, OUT REDFISH_RESPONSE *Response, IN BOOLEAN UseCache)
 
EFI_STATUS EFIAPI RedfishFreeRequest (IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_REQUEST *Request)
 
EFI_STATUS EFIAPI RedfishFreeResponse (IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_RESPONSE *Response)
 
EFI_STATUS EFIAPI RedfishExpireResponse (IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN EFI_STRING Uri)
 
EFI_STATUS EFIAPI RedfishPatchResource (IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_SERVICE Service, IN EFI_STRING Uri, IN CHAR8 *Content, IN UINTN ContentSize OPTIONAL, IN CHAR8 *ContentType OPTIONAL, OUT REDFISH_RESPONSE *Response)
 
EFI_STATUS EFIAPI RedfishPutResource (IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_SERVICE Service, IN EFI_STRING Uri, IN CHAR8 *Content, IN UINTN ContentSize OPTIONAL, IN CHAR8 *ContentType OPTIONAL, OUT REDFISH_RESPONSE *Response)
 
EFI_STATUS EFIAPI RedfishPostResource (IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_SERVICE Service, IN EFI_STRING Uri, IN CHAR8 *Content, IN UINTN ContentSize OPTIONAL, IN CHAR8 *ContentType OPTIONAL, OUT REDFISH_RESPONSE *Response)
 
EFI_STATUS EFIAPI RedfishDeleteResource (IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_SERVICE Service, IN EFI_STRING Uri, IN CHAR8 *Content OPTIONAL, IN UINTN ContentSize OPTIONAL, IN CHAR8 *ContentType OPTIONAL, OUT REDFISH_RESPONSE *Response)
 
EFI_STATUS EFIAPI RedfishHttpDriverUnload (IN EFI_HANDLE ImageHandle)
 
VOID EFIAPI CredentialProtocolInstalled (IN EFI_EVENT Event, IN VOID *Context)
 
EFI_STATUS EFIAPI RedfishHttpEntryPoint (IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
 

Variables

REDFISH_HTTP_CACHE_PRIVATEmRedfishHttpCachePrivate = NULL
 
EDKII_REDFISH_HTTP_PROTOCOL mEdkIIRedfishHttpProtocol
 

Detailed Description

RedfishHttpDxe produces EdkIIRedfishHttpProtocol for EDK2 Redfish Feature driver to do HTTP operations.

Copyright (c) 2023-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved.

SPDX-License-Identifier: BSD-2-Clause-Patent

Definition in file RedfishHttpDxe.c.

Function Documentation

◆ CredentialProtocolInstalled()

VOID EFIAPI CredentialProtocolInstalled ( IN EFI_EVENT  Event,
IN VOID *  Context 
)

This is a EDKII_REDFISH_CREDENTIAL_PROTOCOL notification event handler.

Parameters
[in]EventEvent whose notification function is being invoked.
[in]ContextPointer to the notification function's context.

Definition at line 1318 of file RedfishHttpDxe.c.

◆ DebugPrintHttpCacheList()

EFI_STATUS DebugPrintHttpCacheList ( IN CONST CHAR8 *  Msg,
IN UINTN  ErrorLevel,
IN REDFISH_HTTP_CACHE_LIST CacheList 
)

Debug output the cache list.

Parameters
[in]MsgDebug message string.
[in]ErrorLevelOutput error level.
[in]CacheListTarget list to dump.
Return values
EFI_SUCCESSDebug dump finished.
EFI_INVALID_PARAMETERHttpCacheList is NULL.

Definition at line 29 of file RedfishHttpDxe.c.

◆ HttpMethodToString()

CHAR8 * HttpMethodToString ( IN EFI_HTTP_METHOD  Method)

Return HTTP method in ASCII string. Caller does not need to free returned string buffer.

Parameters
[in]MethodHTTP method.
Return values
CHAR8* Method in string.

Definition at line 204 of file RedfishHttpDxe.c.

◆ RedfishCreateRedfishService()

REDFISH_SERVICE EFIAPI RedfishCreateRedfishService ( IN EDKII_REDFISH_HTTP_PROTOCOL This,
IN REDFISH_CONFIG_SERVICE_INFORMATION RedfishConfigServiceInfo 
)

This function create Redfish service. It's caller's responsibility to free returned Redfish service by calling FreeService ().

Parameters
[in]ThisPointer to EDKII_REDFISH_HTTP_PROTOCOL instance.
[in]RedfishConfigServiceInfoRedfish config service information.
Return values
REDFISH_SERVICERedfish service is created.
NULLErrors occur.

Definition at line 285 of file RedfishHttpDxe.c.

◆ RedfishDeleteResource()

EFI_STATUS EFIAPI RedfishDeleteResource ( IN EDKII_REDFISH_HTTP_PROTOCOL This,
IN REDFISH_SERVICE  Service,
IN EFI_STRING  Uri,
IN CHAR8 *Content  OPTIONAL,
IN UINTN ContentSize  OPTIONAL,
IN CHAR8 *ContentType  OPTIONAL,
OUT REDFISH_RESPONSE Response 
)

Perform HTTP DELETE to delete redfish resource on given resource URI. It's caller's responsibility to free Response by calling FreeResponse ().

Parameters
[in]ThisPointer to EDKII_REDFISH_HTTP_PROTOCOL instance.
[in]ServiceRedfish service instance to perform HTTP DELETE.
[in]UriTarget resource URI.
[in]ContentJSON represented properties to be deleted. This is optional.
[in]ContentSizeSize of the Content to be send to Redfish service. This is optional. When ContentSize is 0, ContentSize is the size of Content if Content is not NULL.
[in]ContentTypeType of the Content to be send to Redfish service. This is optional. When Content is not NULL and ContentType is NULL, content type HTTP_CONTENT_TYPE_APP_JSON will be used.
[out]ResponseHTTP response from redfish service.
Return values
EFI_SUCCESSResource is returned successfully.
OthersErrors occur.

Definition at line 1163 of file RedfishHttpDxe.c.

◆ RedfishExpireResponse()

EFI_STATUS EFIAPI RedfishExpireResponse ( IN EDKII_REDFISH_HTTP_PROTOCOL This,
IN EFI_STRING  Uri 
)

This function expire the cached response of given URI.

Parameters
[in]ThisPointer to EDKII_REDFISH_HTTP_PROTOCOL instance.
[in]UriTarget response of URI.
Return values
EFI_SUCCESSTarget response is expired successfully.
OthersErrors occur.

Definition at line 764 of file RedfishHttpDxe.c.

◆ RedfishFreeRedfishService()

EFI_STATUS EFIAPI RedfishFreeRedfishService ( IN EDKII_REDFISH_HTTP_PROTOCOL This,
IN REDFISH_SERVICE  RedfishService 
)

This function free resources in Redfish service. RedfishService is no longer available after this function returns successfully.

Parameters
[in]ThisPointer to EDKII_REDFISH_HTTP_PROTOCOL instance.
[in]RedfishServicePointer to Redfish service to be released.
Return values
EFI_SUCCESSResource is released successfully.
OthersErrors occur.

Definition at line 491 of file RedfishHttpDxe.c.

◆ RedfishFreeRequest()

EFI_STATUS EFIAPI RedfishFreeRequest ( IN EDKII_REDFISH_HTTP_PROTOCOL This,
IN REDFISH_REQUEST Request 
)

This function free resources in Request. Request is no longer available after this function returns successfully.

Parameters
[in]ThisPointer to EDKII_REDFISH_HTTP_PROTOCOL instance.
[in]RequestHTTP request to be released.
Return values
EFI_SUCCESSResource is released successfully.
OthersErrors occur.

Definition at line 712 of file RedfishHttpDxe.c.

◆ RedfishFreeResponse()

EFI_STATUS EFIAPI RedfishFreeResponse ( IN EDKII_REDFISH_HTTP_PROTOCOL This,
IN REDFISH_RESPONSE Response 
)

This function free resources in given Response.

Parameters
[in]ThisPointer to EDKII_REDFISH_HTTP_PROTOCOL instance.
[in]ResponseHTTP response to be released.
Return values
EFI_SUCCESSResource is released successfully.
OthersErrors occur.

Definition at line 738 of file RedfishHttpDxe.c.

◆ RedfishGetResource()

EFI_STATUS EFIAPI RedfishGetResource ( IN EDKII_REDFISH_HTTP_PROTOCOL This,
IN REDFISH_SERVICE  Service,
IN EFI_STRING  Uri,
IN REDFISH_REQUEST *Request  OPTIONAL,
OUT REDFISH_RESPONSE Response,
IN BOOLEAN  UseCache 
)

Perform HTTP GET to Get redfish resource from given resource URI with cache mechanism supported. It's caller's responsibility to free Response by calling FreeResponse ().

Parameters
[in]ThisPointer to EDKII_REDFISH_HTTP_PROTOCOL instance.
[in]ServiceRedfish service instance to perform HTTP GET.
[in]UriTarget resource URI.
[in]RequestAdditional request context. This is optional.
[out]ResponseHTTP response from redfish service.
[in]UseCacheIf it is TRUE, this function will search for cache first. If it is FALSE, this function will query Redfish URI directly.
Return values
EFI_SUCCESSResource is returned successfully.
OthersErrors occur.

Definition at line 579 of file RedfishHttpDxe.c.

◆ RedfishHttpDriverUnload()

EFI_STATUS EFIAPI RedfishHttpDriverUnload ( IN EFI_HANDLE  ImageHandle)

Unloads an image.

Parameters
[in]ImageHandleHandle that identifies the image to be unloaded.
Return values
EFI_SUCCESSThe image has been unloaded.
EFI_INVALID_PARAMETERImageHandle is not a valid image handle.

Definition at line 1284 of file RedfishHttpDxe.c.

◆ RedfishHttpEntryPoint()

EFI_STATUS EFIAPI RedfishHttpEntryPoint ( IN EFI_HANDLE  ImageHandle,
IN EFI_SYSTEM_TABLE SystemTable 
)

Main entry for this driver.

Parameters
[in]ImageHandleImage handle this driver.
[in]SystemTablePointer to SystemTable.
Return values
EFI_SUCCESSThis function always complete successfully.

Definition at line 1358 of file RedfishHttpDxe.c.

◆ RedfishJsonInRedfishPayload()

EDKII_JSON_VALUE EFIAPI RedfishJsonInRedfishPayload ( IN EDKII_REDFISH_HTTP_PROTOCOL This,
IN REDFISH_PAYLOAD  RedfishPayload 
)

This function returns JSON value in given RedfishPayload. Returned JSON value is a reference to the JSON value in RedfishPayload. Any modification to returned JSON value will change JSON value in RedfishPayload.

Parameters
[in]ThisPointer to EDKII_REDFISH_HTTP_PROTOCOL instance.
[in]RedfishPayloadPointer to Redfish payload.
Return values
EDKII_JSON_VALUEJSON value is returned.
NULLErrors occur.

Definition at line 540 of file RedfishHttpDxe.c.

◆ RedfishPatchResource()

EFI_STATUS EFIAPI RedfishPatchResource ( IN EDKII_REDFISH_HTTP_PROTOCOL This,
IN REDFISH_SERVICE  Service,
IN EFI_STRING  Uri,
IN CHAR8 *  Content,
IN UINTN ContentSize  OPTIONAL,
IN CHAR8 *ContentType  OPTIONAL,
OUT REDFISH_RESPONSE Response 
)

Perform HTTP PATCH to send redfish resource to given resource URI. It's caller's responsibility to free Response by calling FreeResponse ().

Parameters
[in]ThisPointer to EDKII_REDFISH_HTTP_PROTOCOL instance.
[in]ServiceRedfish service instance to perform HTTP PATCH.
[in]UriTarget resource URI.
[in]ContentData to patch.
[in]ContentSizeSize of the Content to be send to Redfish service. This is optional. When ContentSize is 0, ContentSize is the size of Content.
[in]ContentTypeType of the Content to be send to Redfish service. This is optional. When ContentType is NULL, content type HTTP_CONTENT_TYPE_APP_JSON will be used.
[out]ResponseHTTP response from redfish service.
Return values
EFI_SUCCESSResource is returned successfully.
OthersErrors occur.

Definition at line 810 of file RedfishHttpDxe.c.

◆ RedfishPostResource()

EFI_STATUS EFIAPI RedfishPostResource ( IN EDKII_REDFISH_HTTP_PROTOCOL This,
IN REDFISH_SERVICE  Service,
IN EFI_STRING  Uri,
IN CHAR8 *  Content,
IN UINTN ContentSize  OPTIONAL,
IN CHAR8 *ContentType  OPTIONAL,
OUT REDFISH_RESPONSE Response 
)

Perform HTTP POST to send redfish resource to given resource URI. It's caller's responsibility to free Response by calling FreeResponse ().

Parameters
[in]ThisPointer to EDKII_REDFISH_HTTP_PROTOCOL instance.
[in]ServiceRedfish service instance to perform HTTP POST.
[in]UriTarget resource URI.
[in]ContentData to post.
[in]ContentSizeSize of the Content to be send to Redfish service. This is optional. When ContentSize is 0, ContentSize is the size of Content.
[in]ContentTypeType of the Content to be send to Redfish service. This is optional. When ContentType is NULL, content type HTTP_CONTENT_TYPE_APP_JSON will be used.
[out]ResponseHTTP response from redfish service.
Return values
EFI_SUCCESSResource is returned successfully.
OthersErrors occur.

Definition at line 1044 of file RedfishHttpDxe.c.

◆ RedfishPutResource()

EFI_STATUS EFIAPI RedfishPutResource ( IN EDKII_REDFISH_HTTP_PROTOCOL This,
IN REDFISH_SERVICE  Service,
IN EFI_STRING  Uri,
IN CHAR8 *  Content,
IN UINTN ContentSize  OPTIONAL,
IN CHAR8 *ContentType  OPTIONAL,
OUT REDFISH_RESPONSE Response 
)

Perform HTTP PUT to send redfish resource to given resource URI. It's caller's responsibility to free Response by calling FreeResponse ().

Parameters
[in]ThisPointer to EDKII_REDFISH_HTTP_PROTOCOL instance.
[in]ServiceRedfish service instance to perform HTTP PUT.
[in]UriTarget resource URI.
[in]ContentData to put.
[in]ContentSizeSize of the Content to be send to Redfish service. This is optional. When ContentSize is 0, ContentSize is the size of Content.
[in]ContentTypeType of the Content to be send to Redfish service. This is optional. When ContentType is NULL, content type HTTP_CONTENT_TYPE_APP_JSON will be used.
[out]ResponseHTTP response from redfish service.
Return values
EFI_SUCCESSResource is returned successfully.
OthersErrors occur.

Definition at line 927 of file RedfishHttpDxe.c.

◆ RedfishRetryRequired()

BOOLEAN RedfishRetryRequired ( IN EFI_HTTP_STATUS_CODE StatusCode)

Check HTTP status code to see if we like to retry HTTP request or not.

Parameters
[in]StatusCodeHTTP status code.
Return values
BOOLEANReturn true when we like to retry request. Return false when we don't want to retry request.

Definition at line 78 of file RedfishHttpDxe.c.

◆ RedfishSuccessResponse()

BOOLEAN RedfishSuccessResponse ( IN EFI_HTTP_METHOD  Method,
IN EFI_HTTP_STATUS_CODE StatusCode 
)

This function follows below sections in Redfish specification to check HTTP status code and see if this is success response or not.

7.5.2 Modification success responses 7.11 POST (action)

Parameters
[in]MethodHTTP method of this status code.
[in]StatusCodeHTTP status code.
Return values
BOOLEANReturn true when this is success response. Return false when this is not success response.

Definition at line 111 of file RedfishHttpDxe.c.

◆ ReportHttpError()

VOID ReportHttpError ( IN EFI_HTTP_METHOD  Method,
IN EFI_STRING  Uri,
IN EFI_HTTP_STATUS_CODE *HttpStatusCode  OPTIONAL 
)

Report HTTP communication error via report status code.

Parameters
[in]MethodHTTP method.
[in]UriThe URI which has failure.
[in]HttpStatusCodeHTTP status code.

Definition at line 240 of file RedfishHttpDxe.c.

◆ StringUnicodeToAscii()

CHAR8 * StringUnicodeToAscii ( IN EFI_STRING  UnicodeStr)

Convert Unicode string to ASCII string. It's call responsibility to release returned buffer.

Parameters
[in]UnicodeStrUnicode string to convert.
Return values
CHAR8* ASCII string returned.
NULLErrors occur.

Definition at line 167 of file RedfishHttpDxe.c.

Variable Documentation

◆ mEdkIIRedfishHttpProtocol

EDKII_REDFISH_HTTP_PROTOCOL mEdkIIRedfishHttpProtocol
Initial value:
= {
EDKII_REDFISH_HTTP_PROTOCOL_REVISION,
}
EFI_STATUS EFIAPI RedfishExpireResponse(IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN EFI_STRING Uri)
EFI_STATUS EFIAPI RedfishGetResource(IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_SERVICE Service, IN EFI_STRING Uri, IN REDFISH_REQUEST *Request OPTIONAL, OUT REDFISH_RESPONSE *Response, IN BOOLEAN UseCache)
EFI_STATUS EFIAPI RedfishPutResource(IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_SERVICE Service, IN EFI_STRING Uri, IN CHAR8 *Content, IN UINTN ContentSize OPTIONAL, IN CHAR8 *ContentType OPTIONAL, OUT REDFISH_RESPONSE *Response)
EFI_STATUS EFIAPI RedfishFreeResponse(IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_RESPONSE *Response)
EFI_STATUS EFIAPI RedfishPatchResource(IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_SERVICE Service, IN EFI_STRING Uri, IN CHAR8 *Content, IN UINTN ContentSize OPTIONAL, IN CHAR8 *ContentType OPTIONAL, OUT REDFISH_RESPONSE *Response)
EFI_STATUS EFIAPI RedfishDeleteResource(IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_SERVICE Service, IN EFI_STRING Uri, IN CHAR8 *Content OPTIONAL, IN UINTN ContentSize OPTIONAL, IN CHAR8 *ContentType OPTIONAL, OUT REDFISH_RESPONSE *Response)
EDKII_JSON_VALUE EFIAPI RedfishJsonInRedfishPayload(IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_PAYLOAD RedfishPayload)
EFI_STATUS EFIAPI RedfishFreeRedfishService(IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_SERVICE RedfishService)
EFI_STATUS EFIAPI RedfishFreeRequest(IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_REQUEST *Request)
EFI_STATUS EFIAPI RedfishPostResource(IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_SERVICE Service, IN EFI_STRING Uri, IN CHAR8 *Content, IN UINTN ContentSize OPTIONAL, IN CHAR8 *ContentType OPTIONAL, OUT REDFISH_RESPONSE *Response)
REDFISH_SERVICE EFIAPI RedfishCreateRedfishService(IN EDKII_REDFISH_HTTP_PROTOCOL *This, IN REDFISH_CONFIG_SERVICE_INFORMATION *RedfishConfigServiceInfo)

Definition at line 1258 of file RedfishHttpDxe.c.

◆ mRedfishHttpCachePrivate

REDFISH_HTTP_CACHE_PRIVATE* mRedfishHttpCachePrivate = NULL

Definition at line 15 of file RedfishHttpDxe.c.