]> git.proxmox.com Git - mirror_edk2.git/blobdiff - RedfishPkg/RedfishDiscoverDxe/RedfishDiscoverInternal.h
RedfishPkg/RedfishDiscoverDxe: Install protocol on each network interface
[mirror_edk2.git] / RedfishPkg / RedfishDiscoverDxe / RedfishDiscoverInternal.h
index cf69d9231a0d4c412e770817389856dbc0425ca4..04fa09e1cc23e1258f586bd069f51e6323586ea6 100644 (file)
@@ -2,6 +2,7 @@
   This file defines the EFI Redfish Discover Protocol interface.\r
 \r
   (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>\r
+  Copyright (c) 2022, AMD Incorporated. All rights reserved.\r
 \r
   SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 \r
 #include <IndustryStandard/RedfishHostInterface.h>\r
 \r
-#define REDFISH_DISCOVER_VERSION  0x00010000\r
-#define EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_TPL TPL_NOTIFY\r
+#define REDFISH_DISCOVER_VERSION                    0x00010000\r
+#define EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_TPL  TPL_NOTIFY\r
 \r
 //\r
-//GUID definitions\r
+// GUID definitions\r
 //\r
 \r
 #define EFI_REDFISH_DISCOVER_TCP4_INSTANCE_GUID \\r
@@ -75,11 +76,11 @@ typedef enum {
 // the network interface.\r
 //\r
 typedef struct {\r
-  EFI_GUID ProtocolGuid;                ///< Network protocol GUID.\r
-  EFI_GUID ProtocolServiceGuid;         ///< Network protocol service GUID.\r
-  UINT32   ProtocolDiscoverId;          ///< The identifier installed on network protocol handle.\r
-  EFI_HANDLE ProtocolControllerHandle;  ///< The controller handle on network protocol.\r
-  VOID *NetworkProtocolInterface;       ///< The protocol interface of network protocol.\r
+  EFI_GUID      ProtocolGuid;              ///< Network protocol GUID.\r
+  EFI_GUID      ProtocolServiceGuid;       ///< Network protocol service GUID.\r
+  UINT32        ProtocolDiscoverId;        ///< The identifier installed on network protocol handle.\r
+  EFI_HANDLE    ProtocolControllerHandle;  ///< The controller handle on network protocol.\r
+  VOID          *NetworkProtocolInterface; ///< The protocol interface of network protocol.\r
 } REDFISH_DISCOVER_NETWORK_INTERFACE_PROTOCOL;\r
 \r
 //\r
@@ -87,39 +88,45 @@ typedef struct {
 // interface properties.\r
 //\r
 typedef struct {\r
-  LIST_ENTRY      Entry;                        ///< Link list entry.\r
-  EFI_HANDLE      OpenDriverAgentHandle;        ///< The agent to open network protocol.\r
-  EFI_HANDLE      OpenDriverControllerHandle;   ///< The controller handle to open network protocol.\r
-  UINTN           HwAddressSize;                ///< The size of network interface hardware address.\r
-  EFI_MAC_ADDRESS MacAddress;                   ///< MAC address of network interface.\r
-  CHAR16          *StrMacAddr;                  ///< String to MAC address of network interface.\r
-  BOOLEAN         GotSubnetInfo;                ///< Indicates sub net information is retrieved.\r
-  EFI_IP_ADDRESS  SubnetAddr;                   ///< Subnet ID.\r
-  EFI_IP_ADDRESS  SubnetMask;                   ///< Subnet mask (IPv4 only)\r
-  UINT8           SubnetPrefixLength;           ///< Subnet prefix.\r
-  UINT16          VlanId;                       ///< VLAN ID\r
-  UINT32          SubnetAddrInfoIPv6Number;     ///< IPv6 address info number.\r
-  EFI_IP6_ADDRESS_INFO *SubnetAddrInfoIPv6;     ///< IPv6 address info.\r
+  LIST_ENTRY                                     Entry;                      ///< Link list entry.\r
+  EFI_HANDLE                                     OpenDriverAgentHandle;      ///< The agent to open network protocol.\r
+  EFI_HANDLE                                     OpenDriverControllerHandle; ///< The controller handle to open network protocol.\r
+  UINTN                                          HwAddressSize;              ///< The size of network interface hardware address.\r
+  EFI_MAC_ADDRESS                                MacAddress;                 ///< MAC address of network interface.\r
+  CHAR16                                         *StrMacAddr;                ///< String to MAC address of network interface.\r
+  BOOLEAN                                        GotSubnetInfo;              ///< Indicates sub net information is retrieved.\r
+  EFI_IP_ADDRESS                                 SubnetAddr;                 ///< Subnet ID.\r
+  EFI_IP_ADDRESS                                 SubnetMask;                 ///< Subnet mask (IPv4 only)\r
+  UINT8                                          SubnetPrefixLength;         ///< Subnet prefix.\r
+  UINT16                                         VlanId;                     ///< VLAN ID\r
+  UINT32                                         SubnetAddrInfoIPv6Number;   ///< IPv6 address info number.\r
+  EFI_IP6_ADDRESS_INFO                           *SubnetAddrInfoIPv6;        ///< IPv6 address info.\r
   //\r
   // Network interface protocol and REST EX infor.\r
   //\r
-  UINT32          NetworkProtocolType;          ///< Network protocol type. Refer to\r
-                                                ///< NETWORK_INTERFACE_PROTOCOL_TYPE.\r
-  REDFISH_DISCOVER_NETWORK_INTERFACE_PROTOCOL NetworkInterfaceProtocolInfo; ///< Network interface protocol information.\r
-  EFI_HANDLE      RestExHandle;                 ///< REST EX handle associated with this network interface.\r
+  UINT32                                         NetworkProtocolType;          ///< Network protocol type. Refer to\r
+                                                                               ///< NETWORK_INTERFACE_PROTOCOL_TYPE.\r
+  REDFISH_DISCOVER_NETWORK_INTERFACE_PROTOCOL    NetworkInterfaceProtocolInfo; ///< Network interface protocol information.\r
+  EFI_HANDLE                                     RestExHandle;                 ///< REST EX handle associated with this network interface.\r
+  //\r
+  // EFI_REDFISH_DISCOVER_PROTOCOL instance installed\r
+  // on this network interface.\r
+  //\r
+  EFI_HANDLE                                     EfiRedfishDiscoverProtocolHandle; ///< EFI_REDFISH_DISCOVER_PROTOTOCOL instance installed\r
+                                                                                   ///< on this network interface.\r
 } EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL;\r
 \r
 //\r
 // Internal structure used to maintain REST EX properties.\r
 //\r
 typedef struct {\r
-    LIST_ENTRY      Entry;                          ///< Link list entry.\r
-    EFI_HANDLE      OpenDriverAgentHandle;          ///< The agent to open network protocol.\r
-    EFI_HANDLE      OpenDriverControllerHandle;     ///< The controller handle to open network protocol.\r
-    EFI_HANDLE      RestExChildHandle;              ///< The child handle created throught REST EX Service Protocol.\r
-    EFI_HANDLE      RestExControllerHandle;         ///< The controller handle which provide REST EX protocol.\r
-    EFI_REST_EX_PROTOCOL *RestExProtocolInterface;  ///< Pointer to EFI_REST_EX_PROTOCOL.\r
-    UINT32          RestExId;                       ///< The identifier installed on REST EX controller handle.\r
+  LIST_ENTRY              Entry;                      ///< Link list entry.\r
+  EFI_HANDLE              OpenDriverAgentHandle;      ///< The agent to open network protocol.\r
+  EFI_HANDLE              OpenDriverControllerHandle; ///< The controller handle to open network protocol.\r
+  EFI_HANDLE              RestExChildHandle;          ///< The child handle created throught REST EX Service Protocol.\r
+  EFI_HANDLE              RestExControllerHandle;     ///< The controller handle which provide REST EX protocol.\r
+  EFI_REST_EX_PROTOCOL    *RestExProtocolInterface;   ///< Pointer to EFI_REST_EX_PROTOCOL.\r
+  UINT32                  RestExId;                   ///< The identifier installed on REST EX controller handle.\r
 } EFI_REDFISH_DISCOVER_REST_EX_INSTANCE_INTERNAL;\r
 \r
 /**\r
@@ -135,46 +142,46 @@ EFI_STATUS
 (EFIAPI *EFI_REDFISH_DISCOVER_GET_SUBNET_INFO)(\r
   IN EFI_HANDLE ImageHandle,\r
   IN EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL *Instance\r
-);\r
+  );\r
 \r
 //\r
 // The require network protocol matrix.\r
 //\r
 typedef struct {\r
-  UINT32   ProtocolType;                                ///< Network protocol type,\r
-                                                        ///< Refer to NETWORK_INTERFACE_PROTOCOL_TYPE.\r
-  CHAR16   *ProtocolName;                               ///< Protocol name.\r
-  EFI_GUID *RequiredProtocolGuid;                       ///< Network protocol interface GUID.\r
-  EFI_GUID *RequiredServiceBindingProtocolGuid;         ///< Network protocol service GUID.\r
-  EFI_GUID *DiscoveredProtocolGuid;                     ///< Protocol interface GUID use to install identifier.\r
-  EFI_REDFISH_DISCOVER_GET_SUBNET_INFO GetSubnetInfo;   ///< Function of getting subnet information.\r
+  UINT32                                  ProtocolType;                        ///< Network protocol type,\r
+                                                                               ///< Refer to NETWORK_INTERFACE_PROTOCOL_TYPE.\r
+  CHAR16                                  *ProtocolName;                       ///< Protocol name.\r
+  EFI_GUID                                *RequiredProtocolGuid;               ///< Network protocol interface GUID.\r
+  EFI_GUID                                *RequiredServiceBindingProtocolGuid; ///< Network protocol service GUID.\r
+  EFI_GUID                                *DiscoveredProtocolGuid;             ///< Protocol interface GUID use to install identifier.\r
+  EFI_REDFISH_DISCOVER_GET_SUBNET_INFO    GetSubnetInfo;                       ///< Function of getting subnet information.\r
 } REDFISH_DISCOVER_REQUIRED_PROTOCOL;\r
 \r
 //\r
 // Link list of Redfish discover instance.\r
 //\r
 typedef struct {\r
-  LIST_ENTRY  NextInstance;                             ///< Next list.\r
-  EFI_REDFISH_DISCOVERED_INSTANCE *Instance;            ///< Pointer to EFI_REDFISH_DISCOVERED_INSTANCE.\r
+  LIST_ENTRY                         NextInstance;      ///< Next list.\r
+  EFI_REDFISH_DISCOVERED_INSTANCE    *Instance;         ///< Pointer to EFI_REDFISH_DISCOVERED_INSTANCE.\r
 } EFI_REDFISH_DISCOVERED_INTERNAL_LIST;\r
 \r
 //\r
 // Internal structure of Redfish discover instance.\r
 //\r
 typedef struct {\r
-  LIST_ENTRY  Entry;                                    ///< Link list entry.\r
-  EFI_HANDLE  Owner;                                    ///< The owner owns this Redfish service discovery.\r
-                                                        ///< It's the EFI image handle of driver uses\r
-                                                        ///< EFI Redfish Discover Protocol.\r
-  EFI_REDFISH_DISCOVER_FLAG DiscoverFlags;              ///< EFI_REDFISH_DISCOVER_FLAG\r
-  EFI_REDFISH_DISCOVERED_TOKEN *DiscoverToken;          ///< Token used to signal when Redfish service is discovered.\r
-  EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL *NetworkInterface; ///< EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL\r
-                                                                     ///< instance used to discover Redfish service.\r
+  LIST_ENTRY                                         Entry;             ///< Link list entry.\r
+  EFI_HANDLE                                         Owner;             ///< The owner owns this Redfish service discovery.\r
+                                                                        ///< It's the EFI image handle of driver uses\r
+                                                                        ///< EFI Redfish Discover Protocol.\r
+  EFI_REDFISH_DISCOVER_FLAG                          DiscoverFlags;     ///< EFI_REDFISH_DISCOVER_FLAG\r
+  EFI_REDFISH_DISCOVERED_TOKEN                       *DiscoverToken;    ///< Token used to signal when Redfish service is discovered.\r
+  EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL    *NetworkInterface; ///< EFI_REDFISH_DISCOVER_NETWORK_INTERFACE_INTERNAL\r
+                                                                        ///< instance used to discover Redfish service.\r
   //\r
   // Below for Host insterface discovery.\r
   //\r
-  BOOLEAN         HostIntfValidation;                   ///< Indicates whether to validate Redfish Host interface.\r
-  EFI_IP_ADDRESS  TargetIpAddress;                      ///< Target IP address reported in Redfish Host interface.\r
+  BOOLEAN                                            HostIntfValidation; ///< Indicates whether to validate Redfish Host interface.\r
+  EFI_IP_ADDRESS                                     TargetIpAddress;    ///< Target IP address reported in Redfish Host interface.\r
 } EFI_REDFISH_DISCOVERED_INTERNAL_INSTANCE;\r
 \r
 /**\r
@@ -197,15 +204,15 @@ typedef struct {
 **/\r
 EFI_STATUS\r
 AddAndSignalNewRedfishService (\r
-  IN EFI_REDFISH_DISCOVERED_INTERNAL_INSTANCE *Instance,\r
-  IN UINTN *RedfishVersion OPTIONAL,\r
-  IN CHAR8 *RedfishLocation OPTIONAL,\r
-  IN CHAR8 *Uuid  OPTIONAL,\r
-  IN CHAR8 *Os  OPTIONAL,\r
-  IN CHAR8 *OsVer  OPTIONAL,\r
-  IN CHAR8 *Product  OPTIONAL,\r
-  IN CHAR8 *ProductVer  OPTIONAL,\r
-  IN BOOLEAN UseHttps\r
+  IN EFI_REDFISH_DISCOVERED_INTERNAL_INSTANCE  *Instance,\r
+  IN UINTN                                     *RedfishVersion OPTIONAL,\r
+  IN CHAR8                                     *RedfishLocation OPTIONAL,\r
+  IN CHAR8                                     *Uuid  OPTIONAL,\r
+  IN CHAR8                                     *Os  OPTIONAL,\r
+  IN CHAR8                                     *OsVer  OPTIONAL,\r
+  IN CHAR8                                     *Product  OPTIONAL,\r
+  IN CHAR8                                     *ProductVer  OPTIONAL,\r
+  IN BOOLEAN                                   UseHttps\r
   );\r
 \r
 /**\r
@@ -223,12 +230,12 @@ AddAndSignalNewRedfishService (
 **/\r
 EFI_STATUS\r
 RedfishGetHostInterfaceProtocolData (\r
-  IN EFI_SMBIOS_PROTOCOL              *Smbios,\r
-  OUT REDFISH_INTERFACE_DATA          **DeviceDescriptor,\r
-  OUT REDFISH_OVER_IP_PROTOCOL_DATA   **ProtocolData\r
+  IN EFI_SMBIOS_PROTOCOL             *Smbios,\r
+  OUT REDFISH_INTERFACE_DATA         **DeviceDescriptor,\r
+  OUT REDFISH_OVER_IP_PROTOCOL_DATA  **ProtocolData\r
   );\r
 \r
-extern EFI_GUID gRedfishDiscoverTcp4Instance;\r
-extern EFI_GUID gRedfishDiscoverTcp6Instance;\r
-extern EFI_GUID gRedfishDiscoverRestEXInstance;\r
+extern EFI_GUID  gRedfishDiscoverTcp4Instance;\r
+extern EFI_GUID  gRedfishDiscoverTcp6Instance;\r
+extern EFI_GUID  gRedfishDiscoverRestEXInstance;\r
 #endif\r