1/*++ 2 3Copyright (c) 2005 - 2006, Intel Corporation. All rights reserved.<BR> 4This program and the accompanying materials 5are licensed and made available under the terms and conditions of the BSD License 6which accompanies this distribution. The full text of the license may be found at 7http://opensource.org/licenses/bsd-license.php 8 9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11 12Module Name: 13 14 ManagedNetwork.h 15 16Abstract: 17 18 UEFI Managed Network protocol definition. 19 20--*/ 21 22#ifndef _MANAGED_NETWORK_H_ 23#define _MANAGED_NETWORK_H_ 24 25#include EFI_PROTOCOL_DEFINITION (SimpleNetwork) 26#include EFI_PROTOCOL_DEFINITION (ServiceBinding) 27 28#define EFI_MANAGED_NETWORK_SERVICE_BINDING_PROTOCOL_GUID \ 29 { 0xf36ff770, 0xa7e1, 0x42cf, {0x9e, 0xd2, 0x56, 0xf0, 0xf2, 0x71, 0xf4, 0x4c} } 30 31#define EFI_MANAGED_NETWORK_PROTOCOL_GUID \ 32 { 0x7ab33a91, 0xace5, 0x4326, {0xb5, 0x72, 0xe7, 0xee, 0x33, 0xd3, 0x9f, 0x16} } 33 34EFI_FORWARD_DECLARATION (EFI_MANAGED_NETWORK_PROTOCOL); 35 36typedef struct { 37 UINT32 ReceivedQueueTimeoutValue; 38 UINT32 TransmitQueueTimeoutValue; 39 UINT16 ProtocolTypeFilter; 40 BOOLEAN EnableUnicastReceive; 41 BOOLEAN EnableMulticastReceive; 42 BOOLEAN EnableBroadcastReceive; 43 BOOLEAN EnablePromiscuousReceive; 44 BOOLEAN FlushQueuesOnReset; 45 BOOLEAN EnableReceiveTimestamps; 46 BOOLEAN DisableBackgroundPolling; 47} EFI_MANAGED_NETWORK_CONFIG_DATA; 48 49typedef struct { 50 EFI_TIME Timestamp; 51 EFI_EVENT RecycleEvent; 52 UINT32 PacketLength; 53 UINT32 HeaderLength; 54 UINT32 AddressLength; 55 UINT32 DataLength; 56 BOOLEAN BroadcastFlag; 57 BOOLEAN MulticastFlag; 58 BOOLEAN PromiscuousFlag; 59 UINT16 ProtocolType; 60 VOID *DestinationAddress; 61 VOID *SourceAddress; 62 VOID *MediaHeader; 63 VOID *PacketData; 64} EFI_MANAGED_NETWORK_RECEIVE_DATA; 65 66typedef struct { 67 UINT32 FragmentLength; 68 VOID *FragmentBuffer; 69} EFI_MANAGED_NETWORK_FRAGMENT_DATA; 70 71typedef struct { 72 EFI_MAC_ADDRESS *DestinationAddress; 73 EFI_MAC_ADDRESS *SourceAddress; 74 UINT16 ProtocolType; 75 UINT32 DataLength; 76 UINT16 HeaderLength; 77 UINT16 FragmentCount; 78 EFI_MANAGED_NETWORK_FRAGMENT_DATA FragmentTable[1]; 79} EFI_MANAGED_NETWORK_TRANSMIT_DATA; 80 81 82typedef struct { 83 EFI_EVENT Event; 84 EFI_STATUS Status; 85 union { 86 EFI_MANAGED_NETWORK_RECEIVE_DATA *RxData; 87 EFI_MANAGED_NETWORK_TRANSMIT_DATA *TxData; 88 } Packet; 89} EFI_MANAGED_NETWORK_COMPLETION_TOKEN; 90 91typedef 92EFI_STATUS 93(EFIAPI *EFI_MANAGED_NETWORK_GET_MODE_DATA) ( 94 IN EFI_MANAGED_NETWORK_PROTOCOL *This, 95 OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, 96 OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL 97 ); 98 99typedef 100EFI_STATUS 101(EFIAPI *EFI_MANAGED_NETWORK_CONFIGURE) ( 102 IN EFI_MANAGED_NETWORK_PROTOCOL *This, 103 IN EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL 104 ); 105 106typedef 107EFI_STATUS 108(EFIAPI *EFI_MANAGED_NETWORK_MCAST_IP_TO_MAC) ( 109 IN EFI_MANAGED_NETWORK_PROTOCOL *This, 110 IN BOOLEAN Ipv6Flag, 111 IN EFI_IP_ADDRESS *IpAddress, 112 OUT EFI_MAC_ADDRESS *MacAddress 113 ); 114 115typedef 116EFI_STATUS 117(EFIAPI *EFI_MANAGED_NETWORK_GROUPS) ( 118 IN EFI_MANAGED_NETWORK_PROTOCOL *This, 119 IN BOOLEAN JoinFlag, 120 IN EFI_MAC_ADDRESS *MacAddress OPTIONAL 121 ); 122 123typedef 124EFI_STATUS 125(EFIAPI *EFI_MANAGED_NETWORK_TRANSMIT) ( 126 IN EFI_MANAGED_NETWORK_PROTOCOL *This, 127 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token 128 ); 129 130typedef 131EFI_STATUS 132(EFIAPI *EFI_MANAGED_NETWORK_RECEIVE) ( 133 IN EFI_MANAGED_NETWORK_PROTOCOL *This, 134 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token 135 ); 136 137typedef 138EFI_STATUS 139(EFIAPI *EFI_MANAGED_NETWORK_CANCEL) ( 140 IN EFI_MANAGED_NETWORK_PROTOCOL *This, 141 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token OPTIONAL 142 ); 143 144typedef 145EFI_STATUS 146(EFIAPI *EFI_MANAGED_NETWORK_POLL) ( 147 IN EFI_MANAGED_NETWORK_PROTOCOL *This 148 ); 149 150struct _EFI_MANAGED_NETWORK_PROTOCOL { 151 EFI_MANAGED_NETWORK_GET_MODE_DATA GetModeData; 152 EFI_MANAGED_NETWORK_CONFIGURE Configure; 153 EFI_MANAGED_NETWORK_MCAST_IP_TO_MAC McastIpToMac; 154 EFI_MANAGED_NETWORK_GROUPS Groups; 155 EFI_MANAGED_NETWORK_TRANSMIT Transmit; 156 EFI_MANAGED_NETWORK_RECEIVE Receive; 157 EFI_MANAGED_NETWORK_CANCEL Cancel; 158 EFI_MANAGED_NETWORK_POLL Poll; 159}; 160 161extern EFI_GUID gEfiManagedNetworkServiceBindingProtocolGuid; 162extern EFI_GUID gEfiManagedNetworkProtocolGuid; 163 164#endif 165