]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/Ip6Dxe/Ip6Impl.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / NetworkPkg / Ip6Dxe / Ip6Impl.h
index 8f114bbb10a5e3b104214eb3ba05aded10fc27fc..9802c33b55712eefc299a82fc37127aab0a8e10f 100644 (file)
@@ -1,15 +1,10 @@
 /** @file\r
   Implementation of EFI_IP6_PROTOCOL protocol interfaces and type definitions.\r
 \r
-  Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>\r
+  (C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>\r
 \r
-  This program and the accompanying materials\r
-  are licensed and made available under the terms and conditions of the BSD License\r
-  which accompanies this distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php.\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -18,6 +13,8 @@
 \r
 #include <Uefi.h>\r
 \r
+#include <IndustryStandard/Dhcp.h>\r
+\r
 #include <Protocol/ServiceBinding.h>\r
 #include <Protocol/ManagedNetwork.h>\r
 #include <Protocol/IpSec.h>\r
@@ -57,8 +54,8 @@
 #include "Ip6ConfigNv.h"\r
 #include "Ip6ConfigImpl.h"\r
 \r
-#define IP6_PROTOCOL_SIGNATURE SIGNATURE_32 ('I', 'P', '6', 'P')\r
-#define IP6_SERVICE_SIGNATURE  SIGNATURE_32 ('I', 'P', '6', 'S')\r
+#define IP6_PROTOCOL_SIGNATURE  SIGNATURE_32 ('I', 'P', '6', 'P')\r
+#define IP6_SERVICE_SIGNATURE   SIGNATURE_32 ('I', 'P', '6', 'S')\r
 \r
 //\r
 // The state of IP6 protocol. It starts from UNCONFIGED. if it is\r
@@ -66,8 +63,8 @@
 // is called, it becomes UNCONFIGED again. If (partly) destroyed, it\r
 // becomes DESTROY.\r
 //\r
-#define IP6_STATE_UNCONFIGED   0\r
-#define IP6_STATE_CONFIGED     1\r
+#define IP6_STATE_UNCONFIGED  0\r
+#define IP6_STATE_CONFIGED    1\r
 \r
 //\r
 // The state of IP6 service. It starts from UNSTARTED. It transits\r
 #define IP6_SERVICE_FROM_PROTOCOL(Sb)   \\r
           CR ((Sb), IP6_SERVICE, ServiceBinding, IP6_SERVICE_SIGNATURE)\r
 \r
-#define IP6_NO_MAPPING(IpInstance) (!(IpInstance)->Interface->Configured)\r
+#define IP6_NO_MAPPING(IpInstance)  (!(IpInstance)->Interface->Configured)\r
 \r
-extern EFI_IPSEC2_PROTOCOL *mIpSec;\r
+extern EFI_IPSEC2_PROTOCOL  *mIpSec;\r
+extern BOOLEAN              mIpSec2Installed;\r
 \r
 //\r
 // IP6_TXTOKEN_WRAP wraps the upper layer's transmit token.\r
@@ -100,17 +98,17 @@ extern EFI_IPSEC2_PROTOCOL *mIpSec;
 // user's event signalled.\r
 //\r
 typedef struct {\r
-  IP6_PROTOCOL              *IpInstance;\r
-  EFI_IP6_COMPLETION_TOKEN  *Token;\r
-  EFI_EVENT                 IpSecRecycleSignal;\r
-  NET_BUF                   *Packet;\r
-  BOOLEAN                   Sent;\r
-  INTN                      Life;\r
+  IP6_PROTOCOL                *IpInstance;\r
+  EFI_IP6_COMPLETION_TOKEN    *Token;\r
+  EFI_EVENT                   IpSecRecycleSignal;\r
+  NET_BUF                     *Packet;\r
+  BOOLEAN                     Sent;\r
+  INTN                        Life;\r
 } IP6_TXTOKEN_WRAP;\r
 \r
 typedef struct {\r
-  EFI_EVENT                 IpSecRecycleSignal;\r
-  NET_BUF                   *Packet;\r
+  EFI_EVENT    IpSecRecycleSignal;\r
+  NET_BUF      *Packet;\r
 } IP6_IPSEC_WRAP;\r
 \r
 //\r
@@ -123,123 +121,123 @@ typedef struct {
 // fragments will be freed at last.\r
 //\r
 typedef struct {\r
-  LIST_ENTRY                Link;\r
-  IP6_PROTOCOL              *IpInstance;\r
-  NET_BUF                   *Packet;\r
-  EFI_IP6_RECEIVE_DATA      RxData;\r
+  LIST_ENTRY              Link;\r
+  IP6_PROTOCOL            *IpInstance;\r
+  NET_BUF                 *Packet;\r
+  EFI_IP6_RECEIVE_DATA    RxData;\r
 } IP6_RXDATA_WRAP;\r
 \r
 struct _IP6_PROTOCOL {\r
-  UINT32                    Signature;\r
+  UINT32                 Signature;\r
 \r
-  EFI_IP6_PROTOCOL          Ip6Proto;\r
-  EFI_HANDLE                Handle;\r
-  INTN                      State;\r
+  EFI_IP6_PROTOCOL       Ip6Proto;\r
+  EFI_HANDLE             Handle;\r
+  INTN                   State;\r
 \r
-  IP6_SERVICE               *Service;\r
-  LIST_ENTRY                Link; // Link to all the IP protocol from the service\r
+  IP6_SERVICE            *Service;\r
+  LIST_ENTRY             Link;    // Link to all the IP protocol from the service\r
 \r
-  UINT8                     PrefixLength; // PrefixLength of the configured station address.\r
+  UINT8                  PrefixLength;    // PrefixLength of the configured station address.\r
   //\r
-  // User's transmit/receive tokens, and received/deliverd packets\r
+  // User's transmit/receive tokens, and received/delivered packets\r
   //\r
-  NET_MAP                   RxTokens;\r
-  NET_MAP                   TxTokens;   // map between (User's Token, IP6_TXTOKE_WRAP)\r
-  LIST_ENTRY                Received;   // Received but not delivered packet\r
-  LIST_ENTRY                Delivered;  // Delivered and to be recycled packets\r
-  EFI_LOCK                  RecycleLock;\r
+  NET_MAP                RxTokens;\r
+  NET_MAP                TxTokens;      // map between (User's Token, IP6_TXTOKE_WRAP)\r
+  LIST_ENTRY             Received;      // Received but not delivered packet\r
+  LIST_ENTRY             Delivered;     // Delivered and to be recycled packets\r
+  EFI_LOCK               RecycleLock;\r
 \r
-  IP6_INTERFACE             *Interface;\r
-  LIST_ENTRY                AddrLink;   // Ip instances with the same IP address.\r
+  IP6_INTERFACE          *Interface;\r
+  LIST_ENTRY             AddrLink;      // Ip instances with the same IP address.\r
 \r
-  EFI_IPv6_ADDRESS          *GroupList; // stored in network order.\r
-  UINT32                    GroupCount;\r
+  EFI_IPv6_ADDRESS       *GroupList;    // stored in network order.\r
+  UINT32                 GroupCount;\r
 \r
-  EFI_IP6_CONFIG_DATA       ConfigData;\r
-  BOOLEAN                   InDestroy;\r
+  EFI_IP6_CONFIG_DATA    ConfigData;\r
+  BOOLEAN                InDestroy;\r
 };\r
 \r
 struct _IP6_SERVICE {\r
-  UINT32                          Signature;\r
-  EFI_SERVICE_BINDING_PROTOCOL    ServiceBinding;\r
-  INTN                            State;\r
+  UINT32                             Signature;\r
+  EFI_SERVICE_BINDING_PROTOCOL       ServiceBinding;\r
+  INTN                               State;\r
 \r
   //\r
   // List of all the IP instances and interfaces, and default\r
   // interface and route table and caches.\r
   //\r
-  UINTN                           NumChildren;\r
-  LIST_ENTRY                      Children;\r
+  UINTN                              NumChildren;\r
+  LIST_ENTRY                         Children;\r
 \r
-  LIST_ENTRY                      Interfaces;\r
+  LIST_ENTRY                         Interfaces;\r
 \r
-  IP6_INTERFACE                   *DefaultInterface;\r
-  IP6_ROUTE_TABLE                 *RouteTable;\r
+  IP6_INTERFACE                      *DefaultInterface;\r
+  IP6_ROUTE_TABLE                    *RouteTable;\r
 \r
-  IP6_LINK_RX_TOKEN               RecvRequest;\r
+  IP6_LINK_RX_TOKEN                  RecvRequest;\r
 \r
   //\r
   // Ip reassemble utilities and MLD data\r
   //\r
-  IP6_ASSEMBLE_TABLE              Assemble;\r
-  IP6_MLD_SERVICE_DATA            MldCtrl;\r
+  IP6_ASSEMBLE_TABLE                 Assemble;\r
+  IP6_MLD_SERVICE_DATA               MldCtrl;\r
 \r
-  EFI_IPv6_ADDRESS                LinkLocalAddr;\r
-  BOOLEAN                         LinkLocalOk;\r
-  BOOLEAN                         LinkLocalDadFail;\r
-  BOOLEAN                         Dhcp6NeedStart;\r
-  BOOLEAN                         Dhcp6NeedInfoRequest;\r
+  EFI_IPv6_ADDRESS                   LinkLocalAddr;\r
+  BOOLEAN                            LinkLocalOk;\r
+  BOOLEAN                            LinkLocalDadFail;\r
+  BOOLEAN                            Dhcp6NeedStart;\r
+  BOOLEAN                            Dhcp6NeedInfoRequest;\r
 \r
   //\r
   // ND data\r
   //\r
-  UINT8                           CurHopLimit;\r
-  UINT32                          LinkMTU;\r
-  UINT32                          BaseReachableTime;\r
-  UINT32                          ReachableTime;\r
-  UINT32                          RetransTimer;\r
-  LIST_ENTRY                      NeighborTable;\r
+  UINT8                              CurHopLimit;\r
+  UINT32                             LinkMTU;\r
+  UINT32                             BaseReachableTime;\r
+  UINT32                             ReachableTime;\r
+  UINT32                             RetransTimer;\r
+  LIST_ENTRY                         NeighborTable;\r
 \r
-  LIST_ENTRY                      OnlinkPrefix;\r
-  LIST_ENTRY                      AutonomousPrefix;\r
+  LIST_ENTRY                         OnlinkPrefix;\r
+  LIST_ENTRY                         AutonomousPrefix;\r
 \r
-  LIST_ENTRY                      DefaultRouterList;\r
-  UINT32                          RoundRobin;\r
+  LIST_ENTRY                         DefaultRouterList;\r
+  UINT32                             RoundRobin;\r
 \r
-  UINT8                           InterfaceIdLen;\r
-  UINT8                           *InterfaceId;\r
+  UINT8                              InterfaceIdLen;\r
+  UINT8                              *InterfaceId;\r
 \r
-  BOOLEAN                         RouterAdvertiseReceived;\r
-  UINT8                           SolicitTimer;\r
-  UINT32                          Ticks;\r
+  BOOLEAN                            RouterAdvertiseReceived;\r
+  UINT8                              SolicitTimer;\r
+  UINT32                             Ticks;\r
 \r
   //\r
   // Low level protocol used by this service instance\r
   //\r
-  EFI_HANDLE                      Image;\r
-  EFI_HANDLE                      Controller;\r
+  EFI_HANDLE                         Image;\r
+  EFI_HANDLE                         Controller;\r
 \r
-  EFI_HANDLE                      MnpChildHandle;\r
-  EFI_MANAGED_NETWORK_PROTOCOL    *Mnp;\r
+  EFI_HANDLE                         MnpChildHandle;\r
+  EFI_MANAGED_NETWORK_PROTOCOL       *Mnp;\r
 \r
-  EFI_MANAGED_NETWORK_CONFIG_DATA MnpConfigData;\r
-  EFI_SIMPLE_NETWORK_MODE         SnpMode;\r
+  EFI_MANAGED_NETWORK_CONFIG_DATA    MnpConfigData;\r
+  EFI_SIMPLE_NETWORK_MODE            SnpMode;\r
 \r
-  EFI_EVENT                       Timer;\r
-  EFI_EVENT                       FasterTimer;\r
+  EFI_EVENT                          Timer;\r
+  EFI_EVENT                          FasterTimer;\r
 \r
   //\r
   // IPv6 Configuration Protocol instance\r
   //\r
-  IP6_CONFIG_INSTANCE             Ip6ConfigInstance;\r
+  IP6_CONFIG_INSTANCE                Ip6ConfigInstance;\r
 \r
   //\r
   // The string representation of the current mac address of the\r
   // NIC this IP6_SERVICE works on.\r
   //\r
-  CHAR16                          *MacString;\r
-  UINT32                          MaxPacketSize;\r
-  UINT32                          OldMaxPacketSize;\r
+  CHAR16                             *MacString;\r
+  UINT32                             MaxPacketSize;\r
+  UINT32                             OldMaxPacketSize;\r
 };\r
 \r
 /**\r
@@ -266,7 +264,7 @@ struct _IP6_SERVICE {
 VOID\r
 EFIAPI\r
 Ip6FreeTxToken (\r
-  IN VOID                   *Context\r
+  IN VOID  *Context\r
   );\r
 \r
 /**\r
@@ -289,8 +287,8 @@ Ip6FreeTxToken (
 **/\r
 EFI_STATUS\r
 Ip6ServiceConfigMnp (\r
-  IN IP6_SERVICE            *IpSb,\r
-  IN BOOLEAN                Force\r
+  IN IP6_SERVICE  *IpSb,\r
+  IN BOOLEAN      Force\r
   );\r
 \r
 /**\r
@@ -309,8 +307,8 @@ Ip6ServiceConfigMnp (
 **/\r
 EFI_STATUS\r
 Ip6Cancel (\r
-  IN IP6_PROTOCOL             *IpInstance,\r
-  IN EFI_IP6_COMPLETION_TOKEN *Token          OPTIONAL\r
+  IN IP6_PROTOCOL              *IpInstance,\r
+  IN EFI_IP6_COMPLETION_TOKEN  *Token          OPTIONAL\r
   );\r
 \r
 /**\r
@@ -322,8 +320,8 @@ Ip6Cancel (
 **/\r
 VOID\r
 Ip6InitProtocol (\r
-  IN IP6_SERVICE            *IpSb,\r
-  IN OUT IP6_PROTOCOL       *IpInstance\r
+  IN IP6_SERVICE       *IpSb,\r
+  IN OUT IP6_PROTOCOL  *IpInstance\r
   );\r
 \r
 /**\r
@@ -337,7 +335,7 @@ Ip6InitProtocol (
 **/\r
 EFI_STATUS\r
 Ip6CleanProtocol (\r
-  IN OUT IP6_PROTOCOL            *IpInstance\r
+  IN OUT IP6_PROTOCOL  *IpInstance\r
   );\r
 \r
 //\r
@@ -364,10 +362,10 @@ Ip6CleanProtocol (
 EFI_STATUS\r
 EFIAPI\r
 EfiIp6GetModeData (\r
-  IN EFI_IP6_PROTOCOL                 *This,\r
-  OUT EFI_IP6_MODE_DATA               *Ip6ModeData     OPTIONAL,\r
-  OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData   OPTIONAL,\r
-  OUT EFI_SIMPLE_NETWORK_MODE         *SnpModeData     OPTIONAL\r
+  IN EFI_IP6_PROTOCOL                  *This,\r
+  OUT EFI_IP6_MODE_DATA                *Ip6ModeData     OPTIONAL,\r
+  OUT EFI_MANAGED_NETWORK_CONFIG_DATA  *MnpConfigData   OPTIONAL,\r
+  OUT EFI_SIMPLE_NETWORK_MODE          *SnpModeData     OPTIONAL\r
   );\r
 \r
 /**\r
@@ -414,14 +412,14 @@ EfiIp6GetModeData (
   @retval EFI_DEVICE_ERROR       An unexpected system or network error occurred. The EFI IPv6\r
                                  Protocol driver instance was not opened.\r
   @retval EFI_UNSUPPORTED        Default protocol specified through\r
-                                 Ip6ConfigData.DefaulProtocol isn't supported.\r
+                                 Ip6ConfigData.DefaultProtocol isn't supported.\r
 \r
 **/\r
 EFI_STATUS\r
 EFIAPI\r
 EfiIp6Configure (\r
-  IN EFI_IP6_PROTOCOL          *This,\r
-  IN EFI_IP6_CONFIG_DATA       *Ip6ConfigData OPTIONAL\r
+  IN EFI_IP6_PROTOCOL     *This,\r
+  IN EFI_IP6_CONFIG_DATA  *Ip6ConfigData OPTIONAL\r
   );\r
 \r
 /**\r
@@ -472,7 +470,7 @@ EfiIp6Groups (
   the destination IPv6 address arithmetically. The gateway address must be on the same subnet as the\r
   configured station address.\r
 \r
-  The default route is added with Destination and PrefixLegth both set to all zeros. The\r
+  The default route is added with Destination and PrefixLength both set to all zeros. The\r
   default route matches all destination IPv6 addresses that do not match any other routes.\r
 \r
   All EFI IPv6 Protocol instances share a routing table.\r
@@ -509,11 +507,11 @@ EfiIp6Groups (
 EFI_STATUS\r
 EFIAPI\r
 EfiIp6Routes (\r
-  IN EFI_IP6_PROTOCOL    *This,\r
-  IN BOOLEAN             DeleteRoute,\r
-  IN EFI_IPv6_ADDRESS    *Destination    OPTIONAL,\r
-  IN UINT8               PrefixLength,\r
-  IN EFI_IPv6_ADDRESS    *GatewayAddress OPTIONAL\r
+  IN EFI_IP6_PROTOCOL  *This,\r
+  IN BOOLEAN           DeleteRoute,\r
+  IN EFI_IPv6_ADDRESS  *Destination    OPTIONAL,\r
+  IN UINT8             PrefixLength,\r
+  IN EFI_IPv6_ADDRESS  *GatewayAddress OPTIONAL\r
   );\r
 \r
 /**\r
@@ -565,12 +563,12 @@ EfiIp6Routes (
 EFI_STATUS\r
 EFIAPI\r
 EfiIp6Neighbors (\r
-  IN EFI_IP6_PROTOCOL          *This,\r
-  IN BOOLEAN                   DeleteFlag,\r
-  IN EFI_IPv6_ADDRESS          *TargetIp6Address,\r
-  IN EFI_MAC_ADDRESS           *TargetLinkAddress OPTIONAL,\r
-  IN UINT32                    Timeout,\r
-  IN BOOLEAN                   Override\r
+  IN EFI_IP6_PROTOCOL  *This,\r
+  IN BOOLEAN           DeleteFlag,\r
+  IN EFI_IPv6_ADDRESS  *TargetIp6Address,\r
+  IN EFI_MAC_ADDRESS   *TargetLinkAddress OPTIONAL,\r
+  IN UINT32            Timeout,\r
+  IN BOOLEAN           Override\r
   );\r
 \r
 /**\r
@@ -644,7 +642,7 @@ EfiIp6Transmit (
   is signaled.\r
 \r
   Current Udp implementation creates an IP child for each Udp child.\r
-  It initates a asynchronous receive immediately whether or not\r
+  It initiates a asynchronous receive immediately whether or not\r
   there is no mapping. Therefore, disable the returning EFI_NO_MAPPING for now.\r
   To enable it, the following check must be performed:\r
 \r
@@ -744,7 +742,7 @@ EfiIp6Cancel (
 EFI_STATUS\r
 EFIAPI\r
 EfiIp6Poll (\r
-  IN EFI_IP6_PROTOCOL          *This\r
+  IN EFI_IP6_PROTOCOL  *This\r
   );\r
 \r
 #endif\r