1 /*++ 2 3 Copyright (c) 2005 - 2006, Intel Corporation. All rights reserved.<BR> 4 This program and the accompanying materials 5 are licensed and made available under the terms and conditions of the BSD License 6 which accompanies this distribution. The full text of the license may be found at 7 http://opensource.org/licenses/bsd-license.php 8 9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11 12 Module Name: 13 14 ManagedNetwork.h 15 16 Abstract: 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 34 EFI_FORWARD_DECLARATION (EFI_MANAGED_NETWORK_PROTOCOL); 35 36 typedef 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 49 typedef 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 66 typedef struct { 67 UINT32 FragmentLength; 68 VOID *FragmentBuffer; 69 } EFI_MANAGED_NETWORK_FRAGMENT_DATA; 70 71 typedef 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 82 typedef 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 91 typedef 92 EFI_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 99 typedef 100 EFI_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 106 typedef 107 EFI_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 115 typedef 116 EFI_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 123 typedef 124 EFI_STATUS 125 (EFIAPI *EFI_MANAGED_NETWORK_TRANSMIT) ( 126 IN EFI_MANAGED_NETWORK_PROTOCOL *This, 127 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token 128 ); 129 130 typedef 131 EFI_STATUS 132 (EFIAPI *EFI_MANAGED_NETWORK_RECEIVE) ( 133 IN EFI_MANAGED_NETWORK_PROTOCOL *This, 134 IN EFI_MANAGED_NETWORK_COMPLETION_TOKEN *Token 135 ); 136 137 typedef 138 EFI_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 144 typedef 145 EFI_STATUS 146 (EFIAPI *EFI_MANAGED_NETWORK_POLL) ( 147 IN EFI_MANAGED_NETWORK_PROTOCOL *This 148 ); 149 150 struct _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 161 extern EFI_GUID gEfiManagedNetworkServiceBindingProtocolGuid; 162 extern EFI_GUID gEfiManagedNetworkProtocolGuid; 163 164 #endif 165