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