]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Efi/Protocol/ManagedNetwork/ManagedNetwork.h
Add in the 1st version of ECP.
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Efi / Protocol / ManagedNetwork / ManagedNetwork.h
1 /*++
2
3 Copyright (c) 2005 - 2006, Intel Corporation
4 All rights reserved. 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 { 0x3b95aa31, 0x3793, 0x434b, 0x86, 0x67, 0xc8, 0x7, 0x8, 0x92, 0xe0, 0x5e }
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 typedef 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 } EFI_MANAGED_NETWORK_PROTOCOL;
160
161 extern EFI_GUID gEfiManagedNetworkServiceBindingProtocolGuid;
162 extern EFI_GUID gEfiManagedNetworkProtocolGuid;
163
164 #endif