]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/Protocol/RedfishDiscover.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdePkg / Include / Protocol / RedfishDiscover.h
CommitLineData
ffddac3e
AC
1/** @file\r
2 This file defines the EFI Redfish Discover Protocol interface.\r
3\r
fe662888 4 (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>\r
ffddac3e
AC
5\r
6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
7\r
fe662888
AC
8 @par Revision Reference:\r
9 - Some corrections and revises are added to UEFI Specification 2.9.\r
10 - This Protocol is introduced in UEFI Specification 2.8.\r
11\r
ffddac3e
AC
12**/\r
13\r
14#ifndef EFI_REDFISH_DISCOVER_PROTOCOL_H_\r
15#define EFI_REDFISH_DISCOVER_PROTOCOL_H_\r
16\r
ffddac3e
AC
17//\r
18// GUID definitions\r
19//\r
20#define EFI_REDFISH_DISCOVER_PROTOCOL_GUID \\r
21 { \\r
22 0x5db12509, 0x4550, 0x4347, { 0x96, 0xb3, 0x73, 0xc0, 0xff, 0x6e, 0x86, 0x9f } \\r
23 }\r
24\r
2f88bd3a 25#define REDFISH_DISCOVER_TOKEN_SIGNATURE SIGNATURE_32 ('R', 'F', 'T', 'S')\r
ffddac3e
AC
26\r
27typedef UINT32 EFI_REDFISH_DISCOVER_FLAG;\r
2f88bd3a
MK
28#define EFI_REDFISH_DISCOVER_HOST_INTERFACE 0x00000001 ///< Discover Redfish server reported in SMBIOS 42h.\r
29#define EFI_REDFISH_DISCOVER_SSDP 0x00000002 ///< Discover Redfish server using UPnP Http search method.\r
30#define EFI_REDFISH_DISCOVER_SSDP_UDP6 0x00000004 ///< Use UDP version 6.\r
31#define EFI_REDFISH_DISCOVER_KEEP_ALIVE 0x00000008 ///< Keep to send UPnP Search in the duration indicated in\r
32 ///< EFI_REDFISH_DISCOVER_DURATION_MASK.\r
33#define EFI_REDFISH_DISCOVER_RENEW 0x00000010 ///< Set this bit to indicate this function to notify the caller\r
ffddac3e
AC
34 ///< a list of all Redfish servers it found. Otherwise, this fucntion\r
35 ///< just notify the caller new found Redfish servers.\r
36 ///<\r
37#define EFI_REDFISH_DISCOVER_VALIDATION 0x80000000 ///< Validate Redfish service for host interface instance.\r
38#define EFI_REDFISH_DISCOVER_DURATION_MASK 0x0f000000 ///< 2 to the Power of Duration. The valid value of duration is between\r
39 ///< 3 to 15. The corresponding duration is 8 to 2^15 seconds.\r
40 ///< Duration is only valid when EFI_REDFISH_DISCOVER_KEEP_ALIVE\r
41 ///< is set to 1.\r
ffddac3e 42typedef struct _EFI_REDFISH_DISCOVER_PROTOCOL EFI_REDFISH_DISCOVER_PROTOCOL;\r
fe662888
AC
43\r
44typedef struct {\r
45 EFI_HANDLE RedfishRestExHandle; ///< REST EX EFI handle associated with this Redfish service.\r
46 BOOLEAN IsUdp6; ///< Indicates it's IP versino 6.\r
47 EFI_IP_ADDRESS RedfishHostIpAddress; ///< IP address of Redfish service.\r
48 UINTN RedfishVersion; ///< Redfish service version.\r
49 CHAR16 *Location; ///< Redfish service location.\r
50 CHAR16 *Uuid; ///< Redfish service UUID.\r
51 CHAR16 *Os; ///< Redfish service OS.\r
52 CHAR16 *OsVersion; ///< Redfish service OS version.\r
53 CHAR16 *Product; ///< Redfish service product name.\r
54 CHAR16 *ProductVer; ///< Redfish service product version.\r
55 BOOLEAN UseHttps; ///< Using HTTPS.\r
56} EFI_REDFISH_DISCOVERED_INFORMATION;\r
ffddac3e
AC
57\r
58typedef struct {\r
2f88bd3a
MK
59 EFI_STATUS Status; ///< Status of Redfish service discovery.\r
60 EFI_REDFISH_DISCOVERED_INFORMATION Information; ///< Redfish service discovered.\r
ffddac3e
AC
61} EFI_REDFISH_DISCOVERED_INSTANCE;\r
62\r
63typedef struct {\r
2f88bd3a
MK
64 UINTN NumberOfServiceFound; ///< Must be 0 when pass to Acquire ().\r
65 EFI_REDFISH_DISCOVERED_INSTANCE *RedfishInstances; ///< Must be NULL when pass to Acquire ().\r
ffddac3e
AC
66} EFI_REDFISH_DISCOVERED_LIST;\r
67\r
68typedef struct {\r
2f88bd3a
MK
69 EFI_MAC_ADDRESS MacAddress; ///< MAC address of network interfase to discover Redfish service.\r
70 BOOLEAN IsIpv6; ///< Indicates it's IP versino 6.\r
71 EFI_IP_ADDRESS SubnetId; ///< Subnet ID.\r
72 UINT8 SubnetPrefixLength; ///< Subnet prefix-length for IPv4 and IPv6.\r
73 UINT16 VlanId; ///< VLAN ID.\r
fe662888 74} EFI_REDFISH_DISCOVER_NETWORK_INTERFACE;\r
ffddac3e
AC
75\r
76typedef struct {\r
2f88bd3a
MK
77 UINT32 Signature; ///< Token signature.\r
78 EFI_REDFISH_DISCOVERED_LIST DiscoverList; ///< The memory of EFI_REDFISH_DISCOVERED_LIST is\r
79 ///< allocated by Acquire() and freed when caller invoke Release().\r
80 EFI_EVENT Event; ///< The TPL_CALLBACK event to be notified when Redfish services\r
81 ///< are discovered or any errors occurred during discovery.\r
82 UINTN Timeout; ///< The timeout value declared in EFI_REDFISH_DISCOVERED_TOKEN\r
83 ///< determines the seconds to drop discover process.\r
84 ///< Basically, the nearby Redfish services must response in >=1\r
85 ///< and <= 5 seconds. The valid timeout value used to have\r
86 ///< asynchronous discovery is >= 1 and <= 5 seconds. Set the\r
87 ///< timeout to zero means to discover Redfish service synchronously.\r
88 ///< Event in token is created by caller to listen the Reefish services\r
89 ///< found by Acquire().\r
ffddac3e
AC
90} EFI_REDFISH_DISCOVERED_TOKEN;\r
91\r
92/**\r
93 This function gets the NIC list which Redfish discover protocol\r
94 can discover Redfish service on it.\r
95\r
96 @param[in] This EFI_REDFISH_DISCOVER_PROTOCOL instance.\r
97 @param[in] ImageHandle EFI Image handle request the NIC list,\r
98 @param[out] NumberOfNetworkInterfaces Number of NICs can do Redfish service discovery.\r
99 @param[out] NetworkInterfaces NIC instances. It's an array of instance. The number of entries\r
100 in array is indicated by NumberOfNetworkInterfaces.\r
101 Caller has to release the memory\r
102 allocated by Redfish discover protocol.\r
103\r
104 @retval EFI_SUCCESS REST EX instances of discovered Redfish are released.\r
105 @retval Others Fail to remove the entry\r
106\r
107**/\r
108typedef\r
109EFI_STATUS\r
110(EFIAPI *EFI_REDFISH_DISCOVER_NETWORK_LIST)(\r
fe662888
AC
111 IN EFI_REDFISH_DISCOVER_PROTOCOL *This,\r
112 IN EFI_HANDLE ImageHandle,\r
113 OUT UINTN *NumberOfNetworkInterfaces,\r
114 OUT EFI_REDFISH_DISCOVER_NETWORK_INTERFACE **NetworkInterfaces\r
2f88bd3a 115 );\r
ffddac3e
AC
116\r
117/**\r
118 This function acquires Redfish services by discovering static Redfish setting\r
119 according to Redfish Host Interface or through SSDP. Returns a list of EFI\r
120 handles in EFI_REDFISH_DISCOVERED_LIST. Each of EFI handle has cooresponding\r
121 EFI REST EX instance installed on it. Each REST EX isntance is a child instance which\r
122 created through EFI REST EX serivce protoocl for communicating with specific\r
123 Redfish service.\r
124\r
125 @param[in] This EFI_REDFISH_DISCOVER_PROTOCOL instance.\r
126 @param[in] ImageHandle EFI image owns these Redfish service instances.\r
127 @param[in] TargetNetworkInterface Target NIC to do the discovery.\r
128 NULL means discover Redfish service on all NICs on platform.\r
129 @param[in] Flags Redfish service discover flags.\r
130 @param[in] Token EFI_REDFISH_DISCOVERED_TOKEN instance.\r
131 The memory of EFI_REDFISH_DISCOVERED_LIST and the strings in\r
132 EFI_REDFISH_DISCOVERED_INFORMATION are all allocated by Acquire()\r
133 and must be freed when caller invoke Release().\r
134\r
135 @retval EFI_SUCCESS REST EX instance of discovered Redfish services are returned.\r
136 @retval EFI_INVALID_PARAMETERS ImageHandle == NULL, Flags == 0, Token == NULL, Token->Timeout > 5,\r
137 or Token->Event == NULL.\r
138 @retval Others Fail acquire Redfish services.\r
139\r
140**/\r
141typedef\r
142EFI_STATUS\r
143(EFIAPI *EFI_REDFISH_DISCOVER_ACQUIRE_SERVICE)(\r
144 IN EFI_REDFISH_DISCOVER_PROTOCOL *This,\r
145 IN EFI_HANDLE ImageHandle,\r
fe662888 146 IN EFI_REDFISH_DISCOVER_NETWORK_INTERFACE *TargetNetworkInterface OPTIONAL,\r
ffddac3e
AC
147 IN EFI_REDFISH_DISCOVER_FLAG Flags,\r
148 IN EFI_REDFISH_DISCOVERED_TOKEN *Token\r
2f88bd3a 149 );\r
ffddac3e
AC
150\r
151/**\r
152 This function aborts Redfish service discovery on the given network interface.\r
153\r
fe662888
AC
154 @param[in] This EFI_REDFISH_DISCOVER_PROTOCOL instance.\r
155 @param[in] TargetNetworkInterface Target NIC to do the discovery.\r
ffddac3e
AC
156\r
157 @retval EFI_SUCCESS REST EX instance of discovered Redfish services are returned.\r
158 @retval Others Fail to abort Redfish service discovery.\r
159\r
160**/\r
161typedef\r
162EFI_STATUS\r
163(EFIAPI *EFI_REDFISH_DISCOVER_ABORT_ACQUIRE)(\r
fe662888
AC
164 IN EFI_REDFISH_DISCOVER_PROTOCOL *This,\r
165 IN EFI_REDFISH_DISCOVER_NETWORK_INTERFACE *TargetNetworkInterface OPTIONAL\r
2f88bd3a 166 );\r
ffddac3e
AC
167\r
168/**\r
169 This function releases Redfish services found by RedfishServiceAcquire().\r
170\r
171 @param[in] This EFI_REDFISH_DISCOVER_PROTOCOL instance.\r
fe662888 172 @param[in] List The Redfish service to release.\r
ffddac3e
AC
173\r
174 @retval EFI_SUCCESS REST EX instances of discovered Redfish are released.\r
175 @retval Others Fail to remove the entry\r
176\r
177**/\r
178typedef\r
179EFI_STATUS\r
180(EFIAPI *EFI_REDFISH_DISCOVER_RELEASE_SERVICE)(\r
181 IN EFI_REDFISH_DISCOVER_PROTOCOL *This,\r
fe662888 182 IN EFI_REDFISH_DISCOVERED_LIST *List\r
2f88bd3a 183 );\r
ffddac3e 184\r
fe662888 185struct _EFI_REDFISH_DISCOVER_PROTOCOL {\r
2f88bd3a
MK
186 EFI_REDFISH_DISCOVER_NETWORK_LIST GetNetworkInterfaceList;\r
187 EFI_REDFISH_DISCOVER_ACQUIRE_SERVICE AcquireRedfishService;\r
188 EFI_REDFISH_DISCOVER_ABORT_ACQUIRE AbortAcquireRedfishService;\r
189 EFI_REDFISH_DISCOVER_RELEASE_SERVICE ReleaseRedfishService;\r
fe662888 190};\r
ffddac3e 191\r
2f88bd3a 192extern EFI_GUID gEfiRedfishDiscoverProtocolGuid;\r
ffddac3e 193#endif\r