+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2005 - 2010, Intel Corporation. All rights reserved.<BR>\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
-\r
-Module Name:\r
-\r
- Ip4.h\r
-\r
-Abstract:\r
-\r
- EFI_IP4_PROTOCOL definition in UEFI 2.2 specification.\r
-\r
---*/\r
-\r
-#ifndef _IP4_H_\r
-#define _IP4_H_\r
-\r
-#include EFI_PROTOCOL_DEFINITION (ManagedNetwork)\r
-#include EFI_PROTOCOL_DEFINITION (ServiceBinding)\r
-\r
-//\r
-//GUID definitions\r
-//\r
-#define EFI_IP4_SERVICE_BINDING_PROTOCOL_GUID \\r
- {0xc51711e7, 0xb4bf, 0x404a, {0xbf, 0xb8, 0x0a, 0x04, 0x8e, 0xf1, 0xff, 0xe4}}\r
-\r
-#define EFI_IP4_PROTOCOL_GUID \\r
- {0x41d94cd2, 0x35b6, 0x455a, {0x82, 0x58, 0xd4, 0xe5, 0x13, 0x34, 0xaa, 0xdd}}\r
-\r
-EFI_FORWARD_DECLARATION (EFI_IP4_PROTOCOL);\r
-\r
-typedef struct {\r
- EFI_HANDLE InstanceHandle;\r
- EFI_IPv4_ADDRESS Ip4Address;\r
- EFI_IPv4_ADDRESS SubnetMask;\r
-} EFI_IP4_ADDRESS_PAIR; \r
-\r
-typedef struct {\r
- EFI_HANDLE DriverHandle;\r
- UINT32 AddressCount;\r
- EFI_IP4_ADDRESS_PAIR AddressPairs[1];\r
-} EFI_IP4_VARIABLE_DATA;\r
-\r
-typedef struct {\r
- UINT8 DefaultProtocol;\r
- BOOLEAN AcceptAnyProtocol;\r
- BOOLEAN AcceptIcmpErrors;\r
- BOOLEAN AcceptBroadcast;\r
- BOOLEAN AcceptPromiscuous;\r
- BOOLEAN UseDefaultAddress;\r
- EFI_IPv4_ADDRESS StationAddress;\r
- EFI_IPv4_ADDRESS SubnetMask;\r
- UINT8 TypeOfService;\r
- UINT8 TimeToLive;\r
- BOOLEAN DoNotFragment;\r
- BOOLEAN RawData;\r
- UINT32 ReceiveTimeout;\r
- UINT32 TransmitTimeout;\r
-} EFI_IP4_CONFIG_DATA;\r
-\r
-\r
-typedef struct _EFI_IP4_ROUTE_TABLE {\r
- EFI_IPv4_ADDRESS SubnetAddress;\r
- EFI_IPv4_ADDRESS SubnetMask;\r
- EFI_IPv4_ADDRESS GatewayAddress;\r
-} EFI_IP4_ROUTE_TABLE;\r
-\r
-typedef struct _EFI_IP4_ICMP_TYPE {\r
- UINT8 Type;\r
- UINT8 Code;\r
-} EFI_IP4_ICMP_TYPE;\r
-\r
-typedef struct {\r
- BOOLEAN IsStarted;\r
- UINT32 MaxPacketSize;\r
- \r
- EFI_IP4_CONFIG_DATA ConfigData;\r
- BOOLEAN IsConfigured;\r
-\r
- UINT32 GroupCount;\r
- EFI_IPv4_ADDRESS *GroupTable;\r
-\r
- UINT32 RouteCount;\r
- EFI_IP4_ROUTE_TABLE *RouteTable;\r
-\r
- UINT32 IcmpTypeCount;\r
- EFI_IP4_ICMP_TYPE *IcmpTypeList;\r
-} EFI_IP4_MODE_DATA;\r
-\r
-#pragma pack(1)\r
-typedef struct _EFI_IP4_HEADER {\r
- UINT8 HeaderLength:4;\r
- UINT8 Version:4;\r
- UINT8 TypeOfService;\r
- UINT16 TotalLength;\r
- UINT16 Identification;\r
- UINT16 Fragmentation;\r
- UINT8 TimeToLive;\r
- UINT8 Protocol;\r
- UINT16 Checksum;\r
- EFI_IPv4_ADDRESS SourceAddress;\r
- EFI_IPv4_ADDRESS DestinationAddress;\r
-} EFI_IP4_HEADER;\r
-#pragma pack()\r
-\r
-typedef struct _EFI_IP4_FRAGMENT_DATA {\r
- UINT32 FragmentLength;\r
- VOID *FragmentBuffer;\r
-} EFI_IP4_FRAGMENT_DATA;\r
-\r
-\r
-typedef struct _EFI_IP4_OVERRIDE_DATA {\r
- EFI_IPv4_ADDRESS SourceAddress;\r
- EFI_IPv4_ADDRESS GatewayAddress;\r
-\r
- UINT8 Protocol;\r
- UINT8 TypeOfService;\r
- UINT8 TimeToLive;\r
- BOOLEAN DoNotFragment;\r
-} EFI_IP4_OVERRIDE_DATA;\r
-\r
-typedef struct _EFI_IP4_TRANSMIT_DATA {\r
- EFI_IPv4_ADDRESS DestinationAddress;\r
-\r
- EFI_IP4_OVERRIDE_DATA *OverrideData;\r
- UINT32 OptionsLength;\r
- VOID *OptionsBuffer;\r
-\r
- UINT32 TotalDataLength;\r
- UINT32 FragmentCount;\r
- EFI_IP4_FRAGMENT_DATA FragmentTable[1];\r
-} EFI_IP4_TRANSMIT_DATA;\r
-\r
-typedef struct _EFI_IP4_RECEIVE_DATA {\r
- EFI_TIME TimeStamp;\r
- EFI_EVENT RecycleSignal;\r
-\r
- UINT32 HeaderLength;\r
- EFI_IP4_HEADER *Header;\r
-\r
- UINT32 OptionsLength;\r
- VOID *Options;\r
-\r
- UINT32 DataLength;\r
- UINT32 FragmentCount;\r
- EFI_IP4_FRAGMENT_DATA FragmentTable[1];\r
-} EFI_IP4_RECEIVE_DATA;\r
-\r
-typedef struct _EFI_IP4_COMPLETION_TOKEN {\r
- EFI_EVENT Event;\r
- EFI_STATUS Status;\r
-\r
- union {\r
- EFI_IP4_RECEIVE_DATA *RxData;\r
- EFI_IP4_TRANSMIT_DATA *TxData;\r
- } Packet;\r
-} EFI_IP4_COMPLETION_TOKEN;\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_IP4_GET_MODE_DATA) (\r
- IN EFI_IP4_PROTOCOL *This,\r
- OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL,\r
- OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL,\r
- OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL\r
- );\r
-\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_IP4_CONFIGURE) (\r
- IN EFI_IP4_PROTOCOL *This,\r
- IN EFI_IP4_CONFIG_DATA *IpConfigData OPTIONAL\r
- );\r
-\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_IP4_GROUPS) (\r
- IN EFI_IP4_PROTOCOL *This,\r
- IN BOOLEAN JoinFlag,\r
- IN EFI_IPv4_ADDRESS *GroupAddress OPTIONAL\r
- );\r
-\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_IP4_ROUTES) (\r
- IN EFI_IP4_PROTOCOL *This,\r
- IN BOOLEAN DeleteRoute,\r
- IN EFI_IPv4_ADDRESS *SubnetAddress,\r
- IN EFI_IPv4_ADDRESS *SubnetMask,\r
- IN EFI_IPv4_ADDRESS *GatewayAddress \r
- );\r
-\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_IP4_TRANSMIT) (\r
- IN EFI_IP4_PROTOCOL *This,\r
- IN EFI_IP4_COMPLETION_TOKEN *Token\r
- );\r
-\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_IP4_RECEIVE) (\r
- IN EFI_IP4_PROTOCOL *This,\r
- IN EFI_IP4_COMPLETION_TOKEN *Token\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_IP4_CANCEL) (\r
- IN EFI_IP4_PROTOCOL *This,\r
- IN EFI_IP4_COMPLETION_TOKEN *Token OPTIONAL\r
- );\r
-\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_IP4_POLL) (\r
- IN EFI_IP4_PROTOCOL *This\r
- );\r
-\r
-struct _EFI_IP4_PROTOCOL {\r
- EFI_IP4_GET_MODE_DATA GetModeData;\r
- EFI_IP4_CONFIGURE Configure;\r
- EFI_IP4_GROUPS Groups;\r
- EFI_IP4_ROUTES Routes;\r
- EFI_IP4_TRANSMIT Transmit;\r
- EFI_IP4_RECEIVE Receive;\r
- EFI_IP4_CANCEL Cancel;\r
- EFI_IP4_POLL Poll;\r
-};\r
-\r
-\r
-extern EFI_GUID gEfiIp4ServiceBindingProtocolGuid;\r
-extern EFI_GUID gEfiIp4RegistryDataGuid;\r
-extern EFI_GUID gEfiIp4ProtocolGuid;\r
-#endif\r