TianoCore EDK2 master
Loading...
Searching...
No Matches
RedfishRestExDriver.c
Go to the documentation of this file.
1
13#include <Uefi.h>
14#include "RedfishRestExDriver.h"
15
16EFI_DRIVER_BINDING_PROTOCOL gRedfishRestExDriverBinding = {
21 NULL,
22 NULL
23};
24
25EFI_SERVICE_BINDING_PROTOCOL mRedfishRestExServiceBinding = {
28};
29
41EFIAPI
43 IN LIST_ENTRY *Entry,
44 IN VOID *Context
45 )
46{
47 RESTEX_INSTANCE *Instance;
48 EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding;
49 UINTN NumberOfChildren;
50 EFI_HANDLE *ChildHandleBuffer;
51
52 if ((Entry == NULL) || (Context == NULL)) {
53 return EFI_INVALID_PARAMETER;
54 }
55
56 Instance = NET_LIST_USER_STRUCT_S (Entry, RESTEX_INSTANCE, Link, RESTEX_INSTANCE_SIGNATURE);
57 ServiceBinding = ((RESTEX_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ServiceBinding;
58 NumberOfChildren = ((RESTEX_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->NumberOfChildren;
59 ChildHandleBuffer = ((RESTEX_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT *)Context)->ChildHandleBuffer;
60
61 if (!NetIsInHandleBuffer (Instance->ChildHandle, NumberOfChildren, ChildHandleBuffer)) {
62 RemoveEntryList (&Instance->Link);
63 return EFI_SUCCESS;
64 }
65
66 return ServiceBinding->DestroyChild (ServiceBinding, Instance->ChildHandle);
67}
68
75VOID
77 IN RESTEX_INSTANCE *Instance
78 )
79{
80 HttpIoDestroyIo (&(Instance->HttpIo));
81
82 FreePool (Instance);
83}
84
97 IN RESTEX_SERVICE *Service,
98 OUT RESTEX_INSTANCE **Instance
99 )
100{
101 RESTEX_INSTANCE *RestExIns;
102 EFI_STATUS Status;
103
104 *Instance = NULL;
105 Status = EFI_SUCCESS;
106
107 RestExIns = AllocateZeroPool (sizeof (RESTEX_INSTANCE));
108 if (RestExIns == NULL) {
109 return EFI_OUT_OF_RESOURCES;
110 }
111
112 RestExIns->Signature = RESTEX_INSTANCE_SIGNATURE;
113 InitializeListHead (&RestExIns->Link);
114 RestExIns->InDestroy = FALSE;
115 RestExIns->Service = Service;
116
117 CopyMem (&RestExIns->RestEx, &mRedfishRestExProtocol, sizeof (RestExIns->RestEx));
118
119 //
120 // Create a HTTP_IO to access the HTTP service.
121 //
122 Status = HttpIoCreateIo (
123 RestExIns->Service->ImageHandle,
124 RestExIns->Service->ControllerHandle,
125 IP_VERSION_4,
126 NULL,
127 NULL,
128 NULL,
129 &(RestExIns->HttpIo)
130 );
131 if (EFI_ERROR (Status)) {
132 FreePool (RestExIns);
133 return Status;
134 }
135
136 *Instance = RestExIns;
137
138 return EFI_SUCCESS;
139}
140
147VOID
149 IN RESTEX_SERVICE *RestExSb
150 )
151{
152 if (RestExSb->HttpChildHandle != NULL) {
153 gBS->CloseProtocol (
154 RestExSb->HttpChildHandle,
155 &gEfiHttpProtocolGuid,
156 RestExSb->ImageHandle,
157 RestExSb->ControllerHandle
158 );
159
161 RestExSb->ControllerHandle,
162 RestExSb->ImageHandle,
163 &gEfiHttpServiceBindingProtocolGuid,
164 RestExSb->HttpChildHandle
165 );
166
167 RestExSb->HttpChildHandle = NULL;
168 }
169
170 gBS->UninstallProtocolInterface (
171 RestExSb->ControllerHandle,
172 &gEfiCallerIdGuid,
173 &RestExSb->Id
174 );
175
176 FreePool (RestExSb);
177}
178
188EFI_REST_EX_SERVICE_ACCESS_MODE
190 IN EFI_HANDLE Controller
191 )
192{
193 //
194 // This is EFI REST EX driver instance to connect
195 // to Redfish service using HTTP in out of band.
196 //
197 if (FixedPcdGetBool (PcdRedfishRestExServiceAccessModeInBand)) {
198 return EfiRestExServiceInBandAccess;
199 } else {
200 return EfiRestExServiceOutOfBandAccess;
201 }
202}
203
219 IN EFI_HANDLE Controller,
220 IN EFI_HANDLE Image,
221 OUT RESTEX_SERVICE **Service
222 )
223{
224 EFI_STATUS Status;
225 RESTEX_SERVICE *RestExSb;
226
227 Status = EFI_SUCCESS;
228 RestExSb = NULL;
229
230 *Service = NULL;
231
232 RestExSb = AllocateZeroPool (sizeof (RESTEX_SERVICE));
233 if (RestExSb == NULL) {
234 return EFI_OUT_OF_RESOURCES;
235 }
236
237 RestExSb->Signature = RESTEX_SERVICE_SIGNATURE;
238
239 RestExSb->ServiceBinding = mRedfishRestExServiceBinding;
240
241 RestExSb->RestExChildrenNum = 0;
242 InitializeListHead (&RestExSb->RestExChildrenList);
243
244 RestExSb->ControllerHandle = Controller;
245 RestExSb->ImageHandle = Image;
246
247 RestExSb->RestExServiceInfo.EfiRestExServiceInfoV10.EfiRestExServiceInfoHeader.Length = sizeof (EFI_REST_EX_SERVICE_INFO);
248 RestExSb->RestExServiceInfo.EfiRestExServiceInfoV10.EfiRestExServiceInfoHeader.RestServiceInfoVer.Major = 1;
249 RestExSb->RestExServiceInfo.EfiRestExServiceInfoV10.EfiRestExServiceInfoHeader.RestServiceInfoVer.Minor = 0;
250 RestExSb->RestExServiceInfo.EfiRestExServiceInfoV10.RestServiceType = EfiRestExServiceRedfish;
251 RestExSb->RestExServiceInfo.EfiRestExServiceInfoV10.RestServiceAccessMode = RestExServiceAccessMode (Controller);
252 RestExSb->RestExServiceInfo.EfiRestExServiceInfoV10.RestExConfigType = EfiRestExConfigHttp;
253 RestExSb->RestExServiceInfo.EfiRestExServiceInfoV10.RestExConfigDataLength = sizeof (EFI_REST_EX_HTTP_CONFIG_DATA);
254
255 Status = gBS->InstallProtocolInterface (
256 &Controller,
257 &gEfiCallerIdGuid,
259 &RestExSb->Id
260 );
261 if (EFI_ERROR (Status)) {
262 FreePool (RestExSb);
263 RestExSb = NULL;
264 }
265
266 *Service = RestExSb;
267 return Status;
268}
269
282EFIAPI
284 IN EFI_HANDLE ImageHandle,
285 IN EFI_SYSTEM_TABLE *SystemTable
286 )
287{
288 EFI_STATUS Status;
289
290 Status = EFI_SUCCESS;
291
292 //
293 // Install the RestEx Driver Binding Protocol.
294 //
296 ImageHandle,
297 SystemTable,
298 &gRedfishRestExDriverBinding,
299 ImageHandle,
302 );
303 if (EFI_ERROR (Status)) {
304 return Status;
305 }
306
307 return Status;
308}
309
353EFIAPI
356 IN EFI_HANDLE ControllerHandle,
357 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
358 )
359{
360 EFI_STATUS Status;
361 UINT32 *Id;
362
363 Status = gBS->OpenProtocol (
364 ControllerHandle,
365 &gEfiCallerIdGuid,
366 (VOID **)&Id,
367 This->DriverBindingHandle,
368 ControllerHandle,
369 EFI_OPEN_PROTOCOL_GET_PROTOCOL
370 );
371 if (!EFI_ERROR (Status)) {
372 return EFI_ALREADY_STARTED;
373 }
374
375 //
376 // Test for the HttpServiceBinding Protocol.
377 //
378 return gBS->OpenProtocol (
379 ControllerHandle,
380 &gEfiHttpServiceBindingProtocolGuid,
381 NULL,
382 This->DriverBindingHandle,
383 ControllerHandle,
384 EFI_OPEN_PROTOCOL_TEST_PROTOCOL
385 );
386}
387
424EFIAPI
427 IN EFI_HANDLE ControllerHandle,
428 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
429 )
430{
431 RESTEX_SERVICE *RestExSb;
432 EFI_STATUS Status;
433 UINT32 *Id;
434 VOID *Interface;
435
436 Status = gBS->OpenProtocol (
437 ControllerHandle,
438 &gEfiCallerIdGuid,
439 (VOID **)&Id,
440 This->DriverBindingHandle,
441 ControllerHandle,
442 EFI_OPEN_PROTOCOL_GET_PROTOCOL
443 );
444 if (!EFI_ERROR (Status)) {
445 return EFI_ALREADY_STARTED;
446 }
447
448 Status = RestExCreateService (ControllerHandle, This->DriverBindingHandle, &RestExSb);
449 if (EFI_ERROR (Status)) {
450 return Status;
451 }
452
453 ASSERT (RestExSb != NULL);
454
455 //
456 // Create a Http child instance, but do not configure it.
457 // This will establish the parent-child relationship.
458 //
459 Status = NetLibCreateServiceChild (
460 ControllerHandle,
461 This->DriverBindingHandle,
462 &gEfiHttpServiceBindingProtocolGuid,
463 &RestExSb->HttpChildHandle
464 );
465 if (EFI_ERROR (Status)) {
466 goto ON_ERROR;
467 }
468
469 Status = gBS->OpenProtocol (
470 RestExSb->HttpChildHandle,
471 &gEfiHttpProtocolGuid,
472 &Interface,
473 This->DriverBindingHandle,
474 ControllerHandle,
475 EFI_OPEN_PROTOCOL_BY_DRIVER
476 );
477 if (EFI_ERROR (Status)) {
478 goto ON_ERROR;
479 }
480
481 //
482 // Install the RestEx ServiceBinding Protocol onto ControllerHandle.
483 //
484 Status = gBS->InstallMultipleProtocolInterfaces (
485 &ControllerHandle,
486 &gEfiRestExServiceBindingProtocolGuid,
487 &RestExSb->ServiceBinding,
488 NULL
489 );
490 if (EFI_ERROR (Status)) {
491 goto ON_ERROR;
492 }
493
494 return EFI_SUCCESS;
495
496ON_ERROR:
497 RestExDestroyService (RestExSb);
498
499 return Status;
500}
501
529EFIAPI
532 IN EFI_HANDLE ControllerHandle,
533 IN UINTN NumberOfChildren,
534 IN EFI_HANDLE *ChildHandleBuffer OPTIONAL
535 )
536{
537 EFI_SERVICE_BINDING_PROTOCOL *ServiceBinding;
538 RESTEX_SERVICE *RestExSb;
539 EFI_HANDLE NicHandle;
540 EFI_STATUS Status;
541 LIST_ENTRY *List;
543
544 //
545 // RestEx driver opens HTTP child, So, Controller is a HTTP
546 // child handle. Locate the Nic handle first. Then get the
547 // RestEx private data back.
548 //
549 NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiHttpProtocolGuid);
550 if (NicHandle == NULL) {
551 return EFI_SUCCESS;
552 }
553
554 Status = gBS->OpenProtocol (
555 NicHandle,
556 &gEfiRestExServiceBindingProtocolGuid,
557 (VOID **)&ServiceBinding,
558 This->DriverBindingHandle,
559 NicHandle,
560 EFI_OPEN_PROTOCOL_GET_PROTOCOL
561 );
562 if (EFI_ERROR (Status)) {
563 return EFI_DEVICE_ERROR;
564 }
565
566 RestExSb = RESTEX_SERVICE_FROM_THIS (ServiceBinding);
567
568 if (!IsListEmpty (&RestExSb->RestExChildrenList)) {
569 //
570 // Destroy the RestEx child instance in ChildHandleBuffer.
571 //
572 List = &RestExSb->RestExChildrenList;
573 Context.ServiceBinding = ServiceBinding;
574 Context.NumberOfChildren = NumberOfChildren;
575 Context.ChildHandleBuffer = ChildHandleBuffer;
576 Status = NetDestroyLinkList (
577 List,
579 &Context,
580 NULL
581 );
582 }
583
584 if (IsListEmpty (&RestExSb->RestExChildrenList)) {
585 gBS->UninstallProtocolInterface (
586 NicHandle,
587 &gEfiRestExServiceBindingProtocolGuid,
588 ServiceBinding
589 );
590
591 RestExDestroyService (RestExSb);
592
593 if (gRedfishRestExControllerNameTable != NULL) {
594 FreeUnicodeStringTable (gRedfishRestExControllerNameTable);
595 gRedfishRestExControllerNameTable = NULL;
596 }
597
598 Status = EFI_SUCCESS;
599 }
600
601 return Status;
602}
603
611VOID
612EFIAPI
616 IN EFI_STATUS EventStatus
617 )
618{
619 EFI_STATUS Status;
620 EFI_TLS_PROTOCOL *TlsProtocol;
621 RESTEX_INSTANCE *Instance;
622 EFI_TLS_VERIFY TlsVerifyMethod;
623
624 if ((Event == HttpEventTlsConfigured) && (EventStatus == EFI_SUCCESS)) {
625 // Reconfigure TLS configuration data.
626 Instance = RESTEX_INSTANCE_FROM_HTTP_CALLBACK (This);
627 Status = gBS->HandleProtocol (
628 Instance->HttpIo.Handle,
629 &gEfiTlsProtocolGuid,
630 (VOID **)&TlsProtocol
631 );
632 if (EFI_ERROR (Status)) {
633 return;
634 }
635
636 TlsVerifyMethod = EFI_TLS_VERIFY_NONE;
637 Status = TlsProtocol->SetSessionData (
638 TlsProtocol,
640 &TlsVerifyMethod,
641 sizeof (EFI_TLS_VERIFY)
642 );
643 if (!EFI_ERROR (Status)) {
644 DEBUG ((DEBUG_MANAGEABILITY, "%a: REST EX reconfigures TLS verify method.\n", __func__));
645 }
646 }
647
648 return;
649}
650
671EFIAPI
674 IN EFI_HANDLE *ChildHandle
675 )
676{
677 RESTEX_SERVICE *RestExSb;
678 RESTEX_INSTANCE *Instance;
679 EFI_STATUS Status;
680 EFI_TPL OldTpl;
681 VOID *Http;
682
683 if ((This == NULL) || (ChildHandle == NULL)) {
684 return EFI_INVALID_PARAMETER;
685 }
686
687 RestExSb = RESTEX_SERVICE_FROM_THIS (This);
688
689 Status = RestExCreateInstance (RestExSb, &Instance);
690 if (EFI_ERROR (Status)) {
691 return Status;
692 }
693
694 ASSERT (Instance != NULL);
695
696 //
697 // Install the RestEx protocol onto ChildHandle
698 //
699 Status = gBS->InstallMultipleProtocolInterfaces (
700 ChildHandle,
701 &gEfiRestExProtocolGuid,
702 &Instance->RestEx,
703 NULL
704 );
705 if (EFI_ERROR (Status)) {
706 goto ON_ERROR;
707 }
708
709 Instance->ChildHandle = *ChildHandle;
710
711 //
712 // Open the Http protocol BY_CHILD.
713 //
714 Status = gBS->OpenProtocol (
715 RestExSb->HttpChildHandle,
716 &gEfiHttpProtocolGuid,
717 (VOID **)&Http,
718 gRedfishRestExDriverBinding.DriverBindingHandle,
719 Instance->ChildHandle,
720 EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
721 );
722 if (EFI_ERROR (Status)) {
723 gBS->UninstallMultipleProtocolInterfaces (
724 Instance->ChildHandle,
725 &gEfiRestExProtocolGuid,
726 &Instance->RestEx,
727 NULL
728 );
729
730 goto ON_ERROR;
731 }
732
733 //
734 // Open the Http protocol by child.
735 //
736 Status = gBS->OpenProtocol (
737 Instance->HttpIo.Handle,
738 &gEfiHttpProtocolGuid,
739 (VOID **)&Http,
740 gRedfishRestExDriverBinding.DriverBindingHandle,
741 Instance->ChildHandle,
742 EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
743 );
744 if (EFI_ERROR (Status)) {
745 //
746 // Close the Http protocol.
747 //
748 gBS->CloseProtocol (
749 RestExSb->HttpChildHandle,
750 &gEfiHttpProtocolGuid,
751 gRedfishRestExDriverBinding.DriverBindingHandle,
752 ChildHandle
753 );
754
755 gBS->UninstallMultipleProtocolInterfaces (
756 Instance->ChildHandle,
757 &gEfiRestExProtocolGuid,
758 &Instance->RestEx,
759 NULL
760 );
761
762 goto ON_ERROR;
763 }
764
765 // Initial HTTP callback function on this REST EX instance
766 Instance->HttpCallbakFunction.Callback = RestExHttpCallback;
767 Status = gBS->InstallProtocolInterface (
768 &Instance->HttpIo.Handle,
769 &gEdkiiHttpCallbackProtocolGuid,
771 &Instance->HttpCallbakFunction
772 );
773 if (EFI_ERROR (Status)) {
774 DEBUG ((DEBUG_ERROR, "%a: Fail to install HttpCallbackFunction.\n", __func__));
775 goto ON_ERROR;
776 }
777
778 //
779 // Add it to the parent's child list.
780 //
781 OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
782
783 InsertTailList (&RestExSb->RestExChildrenList, &Instance->Link);
784 RestExSb->RestExChildrenNum++;
785
786 gBS->RestoreTPL (OldTpl);
787
788 return EFI_SUCCESS;
789
790ON_ERROR:
791
792 RestExDestroyInstance (Instance);
793 return Status;
794}
795
815EFIAPI
818 IN EFI_HANDLE ChildHandle
819 )
820{
821 RESTEX_SERVICE *RestExSb;
822 RESTEX_INSTANCE *Instance;
823
824 EFI_REST_EX_PROTOCOL *RestEx;
825 EFI_STATUS Status;
826 EFI_TPL OldTpl;
827
828 if ((This == NULL) || (ChildHandle == NULL)) {
829 return EFI_INVALID_PARAMETER;
830 }
831
832 //
833 // Retrieve the private context data structures
834 //
835 Status = gBS->OpenProtocol (
836 ChildHandle,
837 &gEfiRestExProtocolGuid,
838 (VOID **)&RestEx,
839 NULL,
840 NULL,
841 EFI_OPEN_PROTOCOL_GET_PROTOCOL
842 );
843
844 if (EFI_ERROR (Status)) {
845 return EFI_UNSUPPORTED;
846 }
847
848 Instance = RESTEX_INSTANCE_FROM_THIS (RestEx);
849 RestExSb = RESTEX_SERVICE_FROM_THIS (This);
850
851 if (Instance->Service != RestExSb) {
852 return EFI_INVALID_PARAMETER;
853 }
854
855 if (Instance->InDestroy) {
856 return EFI_SUCCESS;
857 }
858
859 OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
860
861 Instance->InDestroy = TRUE;
862
863 //
864 // Close the Http protocol.
865 //
866 gBS->CloseProtocol (
867 RestExSb->HttpChildHandle,
868 &gEfiHttpProtocolGuid,
869 gRedfishRestExDriverBinding.DriverBindingHandle,
870 ChildHandle
871 );
872
873 gBS->CloseProtocol (
874 Instance->HttpIo.Handle,
875 &gEfiHttpProtocolGuid,
876 gRedfishRestExDriverBinding.DriverBindingHandle,
877 ChildHandle
878 );
879
880 gBS->RestoreTPL (OldTpl);
881
882 //
883 // Uninstall the RestEx protocol first to enable a top down destruction.
884 //
885 Status = gBS->UninstallProtocolInterface (
886 ChildHandle,
887 &gEfiRestExProtocolGuid,
888 RestEx
889 );
890
891 //
892 // Uninstall the HTTP callback protocol.
893 //
894 Status = gBS->UninstallProtocolInterface (
895 Instance->HttpIo.Handle,
896 &gEdkiiHttpCallbackProtocolGuid,
897 &Instance->HttpCallbakFunction
898 );
899
900 OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
901
902 if (EFI_ERROR (Status)) {
903 Instance->InDestroy = FALSE;
904 gBS->RestoreTPL (OldTpl);
905 return Status;
906 }
907
908 RemoveEntryList (&Instance->Link);
909 RestExSb->RestExChildrenNum--;
910
911 gBS->RestoreTPL (OldTpl);
912
913 RestExDestroyInstance (Instance);
914 return EFI_SUCCESS;
915}
UINT64 UINTN
BOOLEAN EFIAPI IsListEmpty(IN CONST LIST_ENTRY *ListHead)
Definition: LinkedList.c:403
LIST_ENTRY *EFIAPI RemoveEntryList(IN CONST LIST_ENTRY *Entry)
Definition: LinkedList.c:590
LIST_ENTRY *EFIAPI InitializeListHead(IN OUT LIST_ENTRY *ListHead)
Definition: LinkedList.c:182
LIST_ENTRY *EFIAPI InsertTailList(IN OUT LIST_ENTRY *ListHead, IN OUT LIST_ENTRY *Entry)
Definition: LinkedList.c:259
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
VOID EFIAPI FreePool(IN VOID *Buffer)
EDKII_HTTP_CALLBACK_EVENT
Definition: HttpCallback.h:22
@ HttpEventTlsConfigured
Definition: HttpCallback.h:70
EFI_STATUS HttpIoCreateIo(IN EFI_HANDLE Image, IN EFI_HANDLE Controller, IN UINT8 IpVersion, IN HTTP_IO_CONFIG_DATA *ConfigData, IN HTTP_IO_CALLBACK Callback, IN VOID *Context, OUT HTTP_IO *HttpIo)
VOID HttpIoDestroyIo(IN HTTP_IO *HttpIo)
Definition: DxeHttpIoLib.c:62
#define NULL
Definition: Base.h:319
#define TRUE
Definition: Base.h:301
#define FALSE
Definition: Base.h:307
#define IN
Definition: Base.h:279
#define OUT
Definition: Base.h:284
#define DEBUG(Expression)
Definition: DebugLib.h:434
EFI_STATUS EFIAPI NetLibCreateServiceChild(IN EFI_HANDLE Controller, IN EFI_HANDLE Image, IN EFI_GUID *ServiceBindingGuid, IN OUT EFI_HANDLE *ChildHandle)
Definition: DxeNetLib.c:1967
EFI_STATUS EFIAPI NetLibDestroyServiceChild(IN EFI_HANDLE Controller, IN EFI_HANDLE Image, IN EFI_GUID *ServiceBindingGuid, IN EFI_HANDLE ChildHandle)
Definition: DxeNetLib.c:2020
BOOLEAN EFIAPI NetIsInHandleBuffer(IN EFI_HANDLE Handle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer OPTIONAL)
Definition: DxeNetLib.c:1306
EFI_HANDLE EFIAPI NetLibGetNicHandle(IN EFI_HANDLE Controller, IN EFI_GUID *ProtocolGuid)
Definition: DxeNetLib.c:3019
EFI_STATUS EFIAPI NetDestroyLinkList(IN LIST_ENTRY *List, IN NET_DESTROY_LINK_LIST_CALLBACK CallBack, IN VOID *Context OPTIONAL, OUT UINTN *ListLength OPTIONAL)
Definition: DxeNetLib.c:1236
#define FixedPcdGetBool(TokenName)
Definition: PcdLib.h:120
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gRedfishRestExComponentName2
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gRedfishRestExComponentName
EFI_STATUS RestExCreateService(IN EFI_HANDLE Controller, IN EFI_HANDLE Image, OUT RESTEX_SERVICE **Service)
EFI_STATUS EFIAPI RedfishRestExDriverBindingStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer OPTIONAL)
EFI_STATUS RestExCreateInstance(IN RESTEX_SERVICE *Service, OUT RESTEX_INSTANCE **Instance)
EFI_STATUS EFIAPI RedfishRestExDriverBindingSupported(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL)
EFI_STATUS EFIAPI RedfishRestExServiceBindingCreateChild(IN EFI_SERVICE_BINDING_PROTOCOL *This, IN EFI_HANDLE *ChildHandle)
EFI_STATUS EFIAPI RestExDestroyChildEntryInHandleBuffer(IN LIST_ENTRY *Entry, IN VOID *Context)
EFI_REST_EX_SERVICE_ACCESS_MODE RestExServiceAccessMode(IN EFI_HANDLE Controller)
VOID RestExDestroyService(IN RESTEX_SERVICE *RestExSb)
EFI_STATUS EFIAPI RedfishRestExDriverEntryPoint(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
VOID RestExDestroyInstance(IN RESTEX_INSTANCE *Instance)
EFI_STATUS EFIAPI RedfishRestExServiceBindingDestroyChild(IN EFI_SERVICE_BINDING_PROTOCOL *This, IN EFI_HANDLE ChildHandle)
VOID EFIAPI RestExHttpCallback(IN EDKII_HTTP_CALLBACK_PROTOCOL *This, IN EDKII_HTTP_CALLBACK_EVENT Event, IN EFI_STATUS EventStatus)
EFI_STATUS EFIAPI RedfishRestExDriverBindingStart(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL)
#define REDFISH_RESTEX_DRIVER_VERSION
#define EFI_TLS_VERIFY_NONE
Definition: Tls.h:171
@ EfiTlsVerifyMethod
Definition: Tls.h:72
UINT32 EFI_TLS_VERIFY
Definition: Tls.h:166
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
UINTN EFI_TPL
Definition: UefiBaseType.h:41
VOID * EFI_HANDLE
Definition: UefiBaseType.h:33
#define EFI_SUCCESS
Definition: UefiBaseType.h:112
EFI_BOOT_SERVICES * gBS
EFI_STATUS EFIAPI EfiLibInstallDriverBindingComponentName2(IN CONST EFI_HANDLE ImageHandle, IN CONST EFI_SYSTEM_TABLE *SystemTable, IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, IN EFI_HANDLE DriverBindingHandle, IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName OPTIONAL, IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2 OPTIONAL)
EFI_STATUS EFIAPI FreeUnicodeStringTable(IN EFI_UNICODE_STRING_TABLE *UnicodeStringTable)
Definition: UefiLib.c:1257
@ EFI_NATIVE_INTERFACE
Definition: UefiSpec.h:1193