]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Efi/Protocol/Udp4/Udp4.h
Add in the 1st version of ECP.
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Efi / Protocol / Udp4 / Udp4.h
1 /*++
2
3 Copyright (c) 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 Udp4.h
15
16 Abstract:
17
18 --*/
19
20 #ifndef _UDP4_H_
21 #define _UDP4_H_
22
23 #include EFI_PROTOCOL_DEFINITION (ServiceBinding)
24 #include EFI_PROTOCOL_DEFINITION (Ip4)
25
26 //
27 //GUID definitions
28 //
29 #define EFI_UDP4_SERVICE_BINDING_PROTOCOL_GUID \
30 { 0x83f01464, 0x99bd, 0x45e5, 0xb3, 0x83, 0xaf, 0x63, 0x05, 0xd8, 0xe9, 0xe6 }
31
32 #define EFI_UDP4_PROTOCOL_GUID \
33 { 0x3ad9df29, 0x4501, 0x478d, 0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3 }
34
35 typedef struct {
36 EFI_HANDLE InstanceHandle;
37 EFI_IPv4_ADDRESS LocalAddress;
38 UINT16 LocalPort;
39 EFI_IPv4_ADDRESS RemoteAddress;
40 UINT16 RemotePort;
41 } EFI_UDP4_SERVICE_POINT;
42
43 typedef struct {
44 EFI_HANDLE DriverHandle;
45 UINT32 ServiceCount;
46 EFI_UDP4_SERVICE_POINT Services[1];
47 } EFI_UDP4_VARIABLE_DATA;
48
49 //
50 //ICMP error definitions
51 //
52 #define EFI_NETWORK_UNREACHABLE EFIERR(100)
53 #define EFI_HOST_UNREACHABLE EFIERR(101)
54 #define EFI_PROTOCOL_UNREACHABLE EFIERR(102)
55 #define EFI_PORT_UNREACHABLE EFIERR(103)
56
57 EFI_FORWARD_DECLARATION (EFI_UDP4_PROTOCOL);
58
59 //*************************************************
60 // EFI_UDP4_FRAGMENT_DATA *
61 //*************************************************
62 typedef struct {
63 UINT32 FragmentLength;
64 VOID *FragmentBuffer;
65 } EFI_UDP4_FRAGMENT_DATA;
66
67 //*************************************************
68 // EFI_UDP4_SESSION_DATA *
69 //*************************************************
70 typedef struct {
71 EFI_IPv4_ADDRESS SourceAddress;
72 UINT16 SourcePort;
73 EFI_IPv4_ADDRESS DestinationAddress;
74 UINT16 DestinationPort;
75 } EFI_UDP4_SESSION_DATA;
76
77 //************************************************
78 // EFI_UDP4_CONFIG_DATA *
79 //************************************************
80 typedef struct {
81 //Receiving Filters
82 BOOLEAN AcceptBroadcast;
83 BOOLEAN AcceptPromiscuous;
84 BOOLEAN AcceptAnyPort;
85 BOOLEAN AllowDuplicatePort;
86 //I/O parameters
87 UINT8 TypeOfService;
88 UINT8 TimeToLive;
89 BOOLEAN DoNotFragment;
90 UINT32 ReceiveTimeout;
91 UINT32 TransmitTimeout;
92 //Access Point
93 BOOLEAN UseDefaultAddress;
94 EFI_IPv4_ADDRESS StationAddress;
95 EFI_IPv4_ADDRESS SubnetMask;
96 UINT16 StationPort;
97 EFI_IPv4_ADDRESS RemoteAddress;
98 UINT16 RemotePort;
99 } EFI_UDP4_CONFIG_DATA;
100
101 //*******************************************************
102 // EFI_UDP4_TRANSMIT_DATA *
103 //*******************************************************
104 typedef struct {
105 EFI_UDP4_SESSION_DATA *UdpSessionData;
106 EFI_IPv4_ADDRESS *GatewayAddress;
107 UINT32 DataLength;
108 UINT32 FragmentCount;
109 EFI_UDP4_FRAGMENT_DATA FragmentTable[1];
110 } EFI_UDP4_TRANSMIT_DATA;
111
112 //*******************************************************
113 // EFI_UDP4_RECEIVE_DATA *
114 //*******************************************************
115 typedef struct {
116 EFI_TIME TimeStamp;
117 EFI_EVENT RecycleSignal;
118 EFI_UDP4_SESSION_DATA UdpSession;
119 UINT32 DataLength;
120 UINT32 FragmentCount;
121 EFI_UDP4_FRAGMENT_DATA FragmentTable[1];
122 } EFI_UDP4_RECEIVE_DATA;
123
124
125 //*******************************************************
126 // EFI_UDP4_COMPLETION_TOKEN *
127 //*******************************************************
128 typedef struct {
129 EFI_EVENT Event;
130 EFI_STATUS Status;
131 union {
132 EFI_UDP4_RECEIVE_DATA *RxData;
133 EFI_UDP4_TRANSMIT_DATA *TxData;
134 } Packet;
135 } EFI_UDP4_COMPLETION_TOKEN;
136
137 typedef
138 EFI_STATUS
139 (EFIAPI *EFI_UDP4_GET_MODE_DATA) (
140 IN EFI_UDP4_PROTOCOL *This,
141 OUT EFI_UDP4_CONFIG_DATA *Udp4ConfigData OPTIONAL,
142 OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL,
143 OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL,
144 OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL
145 );
146
147 typedef
148 EFI_STATUS
149 (EFIAPI *EFI_UDP4_CONFIGURE) (
150 IN EFI_UDP4_PROTOCOL *This,
151 IN EFI_UDP4_CONFIG_DATA *UdpConfigData OPTIONAL
152 );
153
154 typedef
155 EFI_STATUS
156 (EFIAPI *EFI_UDP4_GROUPS) (
157 IN EFI_UDP4_PROTOCOL *This,
158 IN BOOLEAN JoinFlag,
159 IN EFI_IPv4_ADDRESS *MulticastAddress OPTIONAL
160 );
161
162 typedef
163 EFI_STATUS
164 (EFIAPI *EFI_UDP4_ROUTES) (
165 IN EFI_UDP4_PROTOCOL *This,
166 IN BOOLEAN DeleteRoute,
167 IN EFI_IPv4_ADDRESS *SubnetAddress,
168 IN EFI_IPv4_ADDRESS *SubnetMask,
169 IN EFI_IPv4_ADDRESS *GatewayAddress
170 );
171
172 typedef
173 EFI_STATUS
174 (EFIAPI *EFI_UDP4_TRANSMIT) (
175 IN EFI_UDP4_PROTOCOL *This,
176 IN EFI_UDP4_COMPLETION_TOKEN *Token
177 );
178
179 typedef
180 EFI_STATUS
181 (EFIAPI *EFI_UDP4_RECEIVE) (
182 IN EFI_UDP4_PROTOCOL *This,
183 IN EFI_UDP4_COMPLETION_TOKEN *Token
184 );
185
186 typedef
187 EFI_STATUS
188 (EFIAPI *EFI_UDP4_CANCEL)(
189 IN EFI_UDP4_PROTOCOL *This,
190 IN EFI_UDP4_COMPLETION_TOKEN *Token OPTIONAL
191 );
192
193 typedef
194 EFI_STATUS
195 (EFIAPI *EFI_UDP4_POLL) (
196 IN EFI_UDP4_PROTOCOL *This
197 );
198
199 typedef struct _EFI_UDP4_PROTOCOL {
200 EFI_UDP4_GET_MODE_DATA GetModeData;
201 EFI_UDP4_CONFIGURE Configure;
202 EFI_UDP4_GROUPS Groups;
203 EFI_UDP4_ROUTES Routes;
204 EFI_UDP4_TRANSMIT Transmit;
205 EFI_UDP4_RECEIVE Receive;
206 EFI_UDP4_CANCEL Cancel;
207 EFI_UDP4_POLL Poll;
208 } EFI_UDP4_PROTOCOL;
209
210 extern EFI_GUID gEfiUdp4ServiceBindingProtocolGuid;
211 extern EFI_GUID gEfiUdp4ProtocolGuid;
212 extern EFI_GUID gEfiUdp4RegistryDataGuid;
213
214 #endif