efiudp.h revision 1.1 1 1.1 jakllsch /* $NetBSD: efiudp.h,v 1.1 2014/04/01 16:16:07 jakllsch Exp $ */
2 1.1 jakllsch
3 1.1 jakllsch #ifndef _EFI_UDP_H
4 1.1 jakllsch #define _EFI_UDP_H
5 1.1 jakllsch
6 1.1 jakllsch
7 1.1 jakllsch /*++
8 1.1 jakllsch Copyright (c) 2013 Intel Corporation
9 1.1 jakllsch
10 1.1 jakllsch --*/
11 1.1 jakllsch
12 1.1 jakllsch #define EFI_UDP4_SERVICE_BINDING_PROTOCOL \
13 1.1 jakllsch { 0x83f01464, 0x99bd, 0x45e5, {0xb3, 0x83, 0xaf, 0x63, 0x05, 0xd8, 0xe9, 0xe6} }
14 1.1 jakllsch
15 1.1 jakllsch #define EFI_UDP4_PROTOCOL \
16 1.1 jakllsch { 0x3ad9df29, 0x4501, 0x478d, {0xb1, 0xf8, 0x7f, 0x7f, 0xe7, 0x0e, 0x50, 0xf3} }
17 1.1 jakllsch
18 1.1 jakllsch #define EFI_UDP6_SERVICE_BINDING_PROTOCOL \
19 1.1 jakllsch { 0x66ed4721, 0x3c98, 0x4d3e, {0x81, 0xe3, 0xd0, 0x3d, 0xd3, 0x9a, 0x72, 0x54} }
20 1.1 jakllsch
21 1.1 jakllsch #define EFI_UDP6_PROTOCOL \
22 1.1 jakllsch { 0x4f948815, 0xb4b9, 0x43cb, {0x8a, 0x33, 0x90, 0xe0, 0x60, 0xb3,0x49, 0x55} }
23 1.1 jakllsch
24 1.1 jakllsch INTERFACE_DECL(_EFI_UDP4);
25 1.1 jakllsch INTERFACE_DECL(_EFI_UDP6);
26 1.1 jakllsch
27 1.1 jakllsch typedef struct {
28 1.1 jakllsch BOOLEAN AcceptBroadcast;
29 1.1 jakllsch BOOLEAN AcceptPromiscuous;
30 1.1 jakllsch BOOLEAN AcceptAnyPort;
31 1.1 jakllsch BOOLEAN AllowDuplicatePort;
32 1.1 jakllsch UINT8 TypeOfService;
33 1.1 jakllsch UINT8 TimeToLive;
34 1.1 jakllsch BOOLEAN DoNotFragment;
35 1.1 jakllsch UINT32 ReceiveTimeout;
36 1.1 jakllsch UINT32 TransmitTimeout;
37 1.1 jakllsch BOOLEAN UseDefaultAddress;
38 1.1 jakllsch EFI_IPv4_ADDRESS StationAddress;
39 1.1 jakllsch EFI_IPv4_ADDRESS SubnetMask;
40 1.1 jakllsch UINT16 StationPort;
41 1.1 jakllsch EFI_IPv4_ADDRESS RemoteAddress;
42 1.1 jakllsch UINT16 RemotePort;
43 1.1 jakllsch } EFI_UDP4_CONFIG_DATA;
44 1.1 jakllsch
45 1.1 jakllsch typedef
46 1.1 jakllsch EFI_STATUS
47 1.1 jakllsch (EFIAPI *EFI_UDP4_GET_MODE_DATA) (
48 1.1 jakllsch IN struct _EFI_UDP4 *This,
49 1.1 jakllsch OUT EFI_UDP4_CONFIG_DATA *Udp4ConfigData OPTIONAL,
50 1.1 jakllsch OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL,
51 1.1 jakllsch OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL,
52 1.1 jakllsch OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL
53 1.1 jakllsch );
54 1.1 jakllsch
55 1.1 jakllsch typedef
56 1.1 jakllsch EFI_STATUS
57 1.1 jakllsch (EFIAPI *EFI_UDP4_CONFIGURE) (
58 1.1 jakllsch IN struct _EFI_UDP4 *This,
59 1.1 jakllsch IN EFI_UDP4_CONFIG_DATA *UdpConfigData OPTIONAL
60 1.1 jakllsch );
61 1.1 jakllsch
62 1.1 jakllsch typedef
63 1.1 jakllsch EFI_STATUS
64 1.1 jakllsch (EFIAPI *EFI_UDP4_GROUPS) (
65 1.1 jakllsch IN struct _EFI_UDP4 *This,
66 1.1 jakllsch IN BOOLEAN JoinFlag,
67 1.1 jakllsch IN EFI_IPv4_ADDRESS *MulticastAddress OPTIONAL
68 1.1 jakllsch );
69 1.1 jakllsch
70 1.1 jakllsch typedef
71 1.1 jakllsch EFI_STATUS
72 1.1 jakllsch (EFIAPI *EFI_UDP4_ROUTES) (
73 1.1 jakllsch IN struct _EFI_UDP4 *This,
74 1.1 jakllsch IN BOOLEAN DeleteRoute,
75 1.1 jakllsch IN EFI_IPv4_ADDRESS *SubnetAddress,
76 1.1 jakllsch IN EFI_IPv4_ADDRESS *SubnetMask,
77 1.1 jakllsch IN EFI_IPv4_ADDRESS *GatewayAddress
78 1.1 jakllsch );
79 1.1 jakllsch
80 1.1 jakllsch #define EFI_NETWORK_UNREACHABLE EFIERR(100)
81 1.1 jakllsch #define EFI_HOST_UNREACHABLE EFIERR(101)
82 1.1 jakllsch #define EFI_PROTOCOL_UNREACHABLE EFIERR(102)
83 1.1 jakllsch #define EFI_PORT_UNREACHABLE EFIERR(103)
84 1.1 jakllsch
85 1.1 jakllsch typedef struct {
86 1.1 jakllsch EFI_IPv4_ADDRESS SourceAddress;
87 1.1 jakllsch UINT16 SourcePort;
88 1.1 jakllsch EFI_IPv4_ADDRESS DestinationAddress;
89 1.1 jakllsch UINT16 DestinationPort;
90 1.1 jakllsch } EFI_UDP4_SESSION_DATA;
91 1.1 jakllsch
92 1.1 jakllsch typedef struct {
93 1.1 jakllsch UINT32 FragmentLength;
94 1.1 jakllsch VOID *FragmentBuffer;
95 1.1 jakllsch } EFI_UDP4_FRAGMENT_DATA;
96 1.1 jakllsch
97 1.1 jakllsch typedef struct {
98 1.1 jakllsch EFI_TIME TimeStamp;
99 1.1 jakllsch EFI_EVENT RecycleSignal;
100 1.1 jakllsch EFI_UDP4_SESSION_DATA UdpSession;
101 1.1 jakllsch UINT32 DataLength;
102 1.1 jakllsch UINT32 FragmentCount;
103 1.1 jakllsch EFI_UDP4_FRAGMENT_DATA FragmentTable[1];
104 1.1 jakllsch } EFI_UDP4_RECEIVE_DATA;
105 1.1 jakllsch
106 1.1 jakllsch typedef struct {
107 1.1 jakllsch EFI_UDP4_SESSION_DATA *UdpSessionData;
108 1.1 jakllsch EFI_IPv4_ADDRESS *GatewayAddress;
109 1.1 jakllsch UINT32 DataLength;
110 1.1 jakllsch UINT32 FragmentCount;
111 1.1 jakllsch EFI_UDP4_FRAGMENT_DATA FragmentTable[1];
112 1.1 jakllsch } EFI_UDP4_TRANSMIT_DATA;
113 1.1 jakllsch
114 1.1 jakllsch typedef struct {
115 1.1 jakllsch EFI_EVENT Event;
116 1.1 jakllsch EFI_STATUS Status;
117 1.1 jakllsch union {
118 1.1 jakllsch EFI_UDP4_RECEIVE_DATA *RxData;
119 1.1 jakllsch EFI_UDP4_TRANSMIT_DATA *TxData;
120 1.1 jakllsch } Packet;
121 1.1 jakllsch } EFI_UDP4_COMPLETION_TOKEN;
122 1.1 jakllsch
123 1.1 jakllsch typedef
124 1.1 jakllsch EFI_STATUS
125 1.1 jakllsch (EFIAPI *EFI_UDP4_TRANSMIT) (
126 1.1 jakllsch IN struct _EFI_UDP4 *This,
127 1.1 jakllsch IN EFI_UDP4_COMPLETION_TOKEN *Token
128 1.1 jakllsch );
129 1.1 jakllsch
130 1.1 jakllsch typedef
131 1.1 jakllsch EFI_STATUS
132 1.1 jakllsch (EFIAPI *EFI_UDP4_RECEIVE) (
133 1.1 jakllsch IN struct _EFI_UDP4 *This,
134 1.1 jakllsch IN EFI_UDP4_COMPLETION_TOKEN *Token
135 1.1 jakllsch );
136 1.1 jakllsch
137 1.1 jakllsch typedef
138 1.1 jakllsch EFI_STATUS
139 1.1 jakllsch (EFIAPI *EFI_UDP4_CANCEL)(
140 1.1 jakllsch IN struct _EFI_UDP4 *This,
141 1.1 jakllsch IN EFI_UDP4_COMPLETION_TOKEN *Token OPTIONAL
142 1.1 jakllsch );
143 1.1 jakllsch
144 1.1 jakllsch typedef
145 1.1 jakllsch EFI_STATUS
146 1.1 jakllsch (EFIAPI *EFI_UDP4_POLL) (
147 1.1 jakllsch IN struct _EFI_UDP4 *This
148 1.1 jakllsch );
149 1.1 jakllsch
150 1.1 jakllsch typedef struct _EFI_UDP4 {
151 1.1 jakllsch EFI_UDP4_GET_MODE_DATA GetModeData;
152 1.1 jakllsch EFI_UDP4_CONFIGURE Configure;
153 1.1 jakllsch EFI_UDP4_GROUPS Groups;
154 1.1 jakllsch EFI_UDP4_ROUTES Routes;
155 1.1 jakllsch EFI_UDP4_TRANSMIT Transmit;
156 1.1 jakllsch EFI_UDP4_RECEIVE Receive;
157 1.1 jakllsch EFI_UDP4_CANCEL Cancel;
158 1.1 jakllsch EFI_UDP4_POLL Poll;
159 1.1 jakllsch } EFI_UDP4;
160 1.1 jakllsch
161 1.1 jakllsch typedef struct {
162 1.1 jakllsch BOOLEAN AcceptPromiscuous;
163 1.1 jakllsch BOOLEAN AcceptAnyPort;
164 1.1 jakllsch BOOLEAN AllowDuplicatePort;
165 1.1 jakllsch UINT8 TrafficClass;
166 1.1 jakllsch UINT8 HopLimit;
167 1.1 jakllsch UINT32 ReceiveTimeout;
168 1.1 jakllsch UINT32 TransmitTimeout;
169 1.1 jakllsch EFI_IPv6_ADDRESS StationAddress;
170 1.1 jakllsch UINT16 StationPort;
171 1.1 jakllsch EFI_IPv6_ADDRESS RemoteAddress;
172 1.1 jakllsch UINT16 RemotePort;
173 1.1 jakllsch } EFI_UDP6_CONFIG_DATA;
174 1.1 jakllsch
175 1.1 jakllsch typedef
176 1.1 jakllsch EFI_STATUS
177 1.1 jakllsch (EFIAPI *EFI_UDP6_GET_MODE_DATA) (
178 1.1 jakllsch IN struct _EFI_UDP6 *This,
179 1.1 jakllsch OUT EFI_UDP6_CONFIG_DATA *Udp6ConfigData OPTIONAL,
180 1.1 jakllsch OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL,
181 1.1 jakllsch OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL,
182 1.1 jakllsch OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL
183 1.1 jakllsch );
184 1.1 jakllsch
185 1.1 jakllsch typedef
186 1.1 jakllsch EFI_STATUS
187 1.1 jakllsch (EFIAPI *EFI_UDP6_CONFIGURE) (
188 1.1 jakllsch IN struct _EFI_UDP6 *This,
189 1.1 jakllsch IN EFI_UDP6_CONFIG_DATA *UdpConfigData OPTIONAL
190 1.1 jakllsch );
191 1.1 jakllsch
192 1.1 jakllsch typedef
193 1.1 jakllsch EFI_STATUS
194 1.1 jakllsch (EFIAPI *EFI_UDP6_GROUPS) (
195 1.1 jakllsch IN struct _EFI_UDP6 *This,
196 1.1 jakllsch IN BOOLEAN JoinFlag,
197 1.1 jakllsch IN EFI_IPv6_ADDRESS *MulticastAddress OPTIONAL
198 1.1 jakllsch );
199 1.1 jakllsch
200 1.1 jakllsch typedef struct {
201 1.1 jakllsch EFI_IPv6_ADDRESS SourceAddress;
202 1.1 jakllsch UINT16 SourcePort;
203 1.1 jakllsch EFI_IPv6_ADDRESS DestinationAddress;
204 1.1 jakllsch UINT16 DestinationPort;
205 1.1 jakllsch } EFI_UDP6_SESSION_DATA;
206 1.1 jakllsch
207 1.1 jakllsch typedef struct {
208 1.1 jakllsch UINT32 FragmentLength;
209 1.1 jakllsch VOID *FragmentBuffer;
210 1.1 jakllsch } EFI_UDP6_FRAGMENT_DATA;
211 1.1 jakllsch
212 1.1 jakllsch typedef struct {
213 1.1 jakllsch EFI_TIME TimeStamp;
214 1.1 jakllsch EFI_EVENT RecycleSignal;
215 1.1 jakllsch EFI_UDP6_SESSION_DATA UdpSession;
216 1.1 jakllsch UINT32 DataLength;
217 1.1 jakllsch UINT32 FragmentCount;
218 1.1 jakllsch EFI_UDP6_FRAGMENT_DATA FragmentTable[1];
219 1.1 jakllsch } EFI_UDP6_RECEIVE_DATA;
220 1.1 jakllsch
221 1.1 jakllsch typedef struct {
222 1.1 jakllsch EFI_UDP6_SESSION_DATA *UdpSessionData;
223 1.1 jakllsch UINT32 DataLength;
224 1.1 jakllsch UINT32 FragmentCount;
225 1.1 jakllsch EFI_UDP6_FRAGMENT_DATA FragmentTable[1];
226 1.1 jakllsch } EFI_UDP6_TRANSMIT_DATA;
227 1.1 jakllsch
228 1.1 jakllsch typedef struct {
229 1.1 jakllsch EFI_EVENT Event;
230 1.1 jakllsch EFI_STATUS Status;
231 1.1 jakllsch union {
232 1.1 jakllsch EFI_UDP6_RECEIVE_DATA *RxData;
233 1.1 jakllsch EFI_UDP6_TRANSMIT_DATA *TxData;
234 1.1 jakllsch } Packet;
235 1.1 jakllsch } EFI_UDP6_COMPLETION_TOKEN;
236 1.1 jakllsch
237 1.1 jakllsch typedef
238 1.1 jakllsch EFI_STATUS
239 1.1 jakllsch (EFIAPI *EFI_UDP6_TRANSMIT) (
240 1.1 jakllsch IN struct _EFI_UDP6 *This,
241 1.1 jakllsch IN EFI_UDP6_COMPLETION_TOKEN *Token
242 1.1 jakllsch );
243 1.1 jakllsch
244 1.1 jakllsch typedef
245 1.1 jakllsch EFI_STATUS
246 1.1 jakllsch (EFIAPI *EFI_UDP6_RECEIVE) (
247 1.1 jakllsch IN struct _EFI_UDP6 *This,
248 1.1 jakllsch IN EFI_UDP6_COMPLETION_TOKEN *Token
249 1.1 jakllsch );
250 1.1 jakllsch
251 1.1 jakllsch typedef
252 1.1 jakllsch EFI_STATUS
253 1.1 jakllsch (EFIAPI *EFI_UDP6_CANCEL)(
254 1.1 jakllsch IN struct _EFI_UDP6 *This,
255 1.1 jakllsch IN EFI_UDP6_COMPLETION_TOKEN *Token OPTIONAL
256 1.1 jakllsch );
257 1.1 jakllsch
258 1.1 jakllsch typedef
259 1.1 jakllsch EFI_STATUS
260 1.1 jakllsch (EFIAPI *EFI_UDP6_POLL) (
261 1.1 jakllsch IN struct _EFI_UDP6 *This
262 1.1 jakllsch );
263 1.1 jakllsch
264 1.1 jakllsch typedef struct _EFI_UDP6 {
265 1.1 jakllsch EFI_UDP6_GET_MODE_DATA GetModeData;
266 1.1 jakllsch EFI_UDP6_CONFIGURE Configure;
267 1.1 jakllsch EFI_UDP6_GROUPS Groups;
268 1.1 jakllsch EFI_UDP6_TRANSMIT Transmit;
269 1.1 jakllsch EFI_UDP6_RECEIVE Receive;
270 1.1 jakllsch EFI_UDP6_CANCEL Cancel;
271 1.1 jakllsch EFI_UDP6_POLL Poll;
272 1.1 jakllsch } EFI_UDP6;
273 1.1 jakllsch
274 1.1 jakllsch #endif /* _EFI_UDP_H */
275