iPXE
Udp6.h
Go to the documentation of this file.
1 /** @file
2  The EFI UDPv6 (User Datagram Protocol version 6) Protocol Definition, which is built upon
3  the EFI IPv6 Protocol and provides simple packet-oriented services to transmit and receive
4  UDP packets.
5 
6  Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>
7  SPDX-License-Identifier: BSD-2-Clause-Patent
8 
9  @par Revision Reference:
10  This Protocol is introduced in UEFI Specification 2.2
11 
12 **/
13 
14 #ifndef __EFI_UDP6_PROTOCOL_H__
15 #define __EFI_UDP6_PROTOCOL_H__
16 
17 FILE_LICENCE ( BSD2_PATENT );
18 FILE_SECBOOT ( PERMITTED );
19 
20 #include <ipxe/efi/Protocol/Ip6.h>
21 
22 #define EFI_UDP6_SERVICE_BINDING_PROTOCOL_GUID \
23  { \
24  0x66ed4721, 0x3c98, 0x4d3e, {0x81, 0xe3, 0xd0, 0x3d, 0xd3, 0x9a, 0x72, 0x54 } \
25  }
26 
27 #define EFI_UDP6_PROTOCOL_GUID \
28  { \
29  0x4f948815, 0xb4b9, 0x43cb, {0x8a, 0x33, 0x90, 0xe0, 0x60, 0xb3, 0x49, 0x55 } \
30  }
31 
32 ///
33 /// EFI_UDP6_SERVICE_POINT is deprecated in the UEFI 2.4B and should not be used any more.
34 /// The definition in here is only present to provide backwards compatability.
35 ///
36 typedef struct {
37  ///
38  /// The EFI UDPv6 Protocol instance handle that is using this address/port pair.
39  ///
41  ///
42  /// The IPv6 address to which this instance of the EFI UDPv6 Protocol is bound.
43  /// Set to 0::/128, if this instance is used to listen all packets from any
44  /// source address.
45  ///
47  ///
48  /// The port number in host byte order on which the service is listening.
49  ///
51  ///
52  /// The IPv6 address of the remote host. May be 0::/128 if it is not connected
53  /// to any remote host or connected with more than one remote host.
54  ///
56  ///
57  /// The port number in host byte order on which the remote host is
58  /// listening. Maybe zero if it is not connected to any remote host.
59  ///
62 
63 ///
64 /// EFI_UDP6_VARIABLE_DATA is deprecated in the UEFI 2.4B and should not be used any more.
65 /// The definition in here is only present to provide backwards compatability.
66 ///
67 typedef struct {
68  ///
69  /// The handle of the driver that creates this entry.
70  ///
72  ///
73  /// The number of address/port pairs that follow this data structure.
74  ///
76  ///
77  /// List of address/port pairs that are currently in use.
78  ///
81 
83 
84 ///
85 /// EFI_UDP6_FRAGMENT_DATA allows multiple receive or transmit buffers to be specified.
86 /// The purpose of this structure is to avoid copying the same packet multiple times.
87 ///
88 typedef struct {
89  UINT32 FragmentLength; ///< Length of the fragment data buffer.
90  VOID *FragmentBuffer; ///< Pointer to the fragment data buffer.
92 
93 ///
94 /// The EFI_UDP6_SESSION_DATA is used to retrieve the settings when receiving packets or
95 /// to override the existing settings (only DestinationAddress and DestinationPort can
96 /// be overridden) of this EFI UDPv6 Protocol instance when sending packets.
97 ///
98 typedef struct {
99  ///
100  /// Address from which this packet is sent. This field should not be used when
101  /// sending packets.
102  ///
104  ///
105  /// Port from which this packet is sent. It is in host byte order. This field should
106  /// not be used when sending packets.
107  ///
109  ///
110  /// Address to which this packet is sent. When sending packet, it'll be ignored
111  /// if it is zero.
112  ///
114  ///
115  /// Port to which this packet is sent. When sending packet, it'll be
116  /// ignored if it is zero.
117  ///
120 
121 typedef struct {
122  ///
123  /// Set to TRUE to accept UDP packets that are sent to any address.
124  ///
126  ///
127  /// Set to TRUE to accept UDP packets that are sent to any port.
128  ///
130  ///
131  /// Set to TRUE to allow this EFI UDPv6 Protocol child instance to open a port number
132  /// that is already being used by another EFI UDPv6 Protocol child instance.
133  ///
135  ///
136  /// TrafficClass field in transmitted IPv6 packets.
137  ///
139  ///
140  /// HopLimit field in transmitted IPv6 packets.
141  ///
143  ///
144  /// The receive timeout value (number of microseconds) to be associated with each
145  /// incoming packet. Zero means do not drop incoming packets.
146  ///
148  ///
149  /// The transmit timeout value (number of microseconds) to be associated with each
150  /// outgoing packet. Zero means do not drop outgoing packets.
151  ///
153  ///
154  /// The station IP address that will be assigned to this EFI UDPv6 Protocol instance.
155  /// The EFI UDPv6 and EFI IPv6 Protocol drivers will only deliver incoming packets
156  /// whose destination matches this IP address exactly. Address 0::/128 is also accepted
157  /// as a special case. Under this situation, underlying IPv6 driver is responsible for
158  /// binding a source address to this EFI IPv6 protocol instance according to source
159  /// address selection algorithm. Only incoming packet from the selected source address
160  /// is delivered. This field can be set and changed only when the EFI IPv6 driver is
161  /// transitioning from the stopped to the started states. If no address is available
162  /// for selecting, the EFI IPv6 Protocol driver will use EFI_IP6_CONFIG_PROTOCOL to
163  /// retrieve the IPv6 address.
165  ///
166  /// The port number to which this EFI UDPv6 Protocol instance is bound. If a client
167  /// of the EFI UDPv6 Protocol does not care about the port number, set StationPort
168  /// to zero. The EFI UDPv6 Protocol driver will assign a random port number to transmitted
169  /// UDP packets. Ignored it if AcceptAnyPort is TRUE.
170  ///
172  ///
173  /// The IP address of remote host to which this EFI UDPv6 Protocol instance is connecting.
174  /// If RemoteAddress is not 0::/128, this EFI UDPv6 Protocol instance will be connected to
175  /// RemoteAddress; i.e., outgoing packets of this EFI UDPv6 Protocol instance will be sent
176  /// to this address by default and only incoming packets from this address will be delivered
177  /// to client. Ignored for incoming filtering if AcceptPromiscuous is TRUE.
179  ///
180  /// The port number of the remote host to which this EFI UDPv6 Protocol instance is connecting.
181  /// If it is not zero, outgoing packets of this EFI UDPv6 Protocol instance will be sent to
182  /// this port number by default and only incoming packets from this port will be delivered
183  /// to client. Ignored if RemoteAddress is 0::/128 and ignored for incoming filtering if
184  /// AcceptPromiscuous is TRUE.
187 
188 ///
189 /// The EFI UDPv6 Protocol client must fill this data structure before sending a packet.
190 /// The packet may contain multiple buffers that may be not in a continuous memory location.
191 ///
192 typedef struct {
193  ///
194  /// If not NULL, the data that is used to override the transmitting settings.Only the two
195  /// filed UdpSessionData.DestinationAddress and UdpSessionData.DestionPort can be used as
196  /// the transmitting setting filed.
197  ///
199  ///
200  /// Sum of the fragment data length. Must not exceed the maximum UDP packet size.
201  ///
203  ///
204  /// Number of fragments.
205  ///
207  ///
208  /// Array of fragment descriptors.
209  ///
210  EFI_UDP6_FRAGMENT_DATA FragmentTable[1];
212 
213 ///
214 /// EFI_UDP6_RECEIVE_DATA is filled by the EFI UDPv6 Protocol driver when this EFI UDPv6
215 /// Protocol instance receives an incoming packet. If there is a waiting token for incoming
216 /// packets, the CompletionToken.Packet.RxData field is updated to this incoming packet and
217 /// the CompletionToken.Event is signaled. The EFI UDPv6 Protocol client must signal the
218 /// RecycleSignal after processing the packet.
219 /// FragmentTable could contain multiple buffers that are not in the continuous memory locations.
220 /// The EFI UDPv6 Protocol client might need to combine two or more buffers in FragmentTable to
221 /// form their own protocol header.
222 ///
223 typedef struct {
224  ///
225  /// Time when the EFI UDPv6 Protocol accepted the packet.
226  ///
228  ///
229  /// Indicates the event to signal when the received data has been processed.
230  ///
232  ///
233  /// The UDP session data including SourceAddress, SourcePort, DestinationAddress,
234  /// and DestinationPort.
235  ///
237  ///
238  /// The sum of the fragment data length.
239  ///
241  ///
242  /// Number of fragments. Maybe zero.
243  ///
245  ///
246  /// Array of fragment descriptors. Maybe zero.
247  ///
248  EFI_UDP6_FRAGMENT_DATA FragmentTable[1];
250 
251 ///
252 /// The EFI_UDP6_COMPLETION_TOKEN structures are used for both transmit and receive operations.
253 /// When used for transmitting, the Event and TxData fields must be filled in by the EFI UDPv6
254 /// Protocol client. After the transmit operation completes, the Status field is updated by the
255 /// EFI UDPv6 Protocol and the Event is signaled.
256 /// When used for receiving, only the Event field must be filled in by the EFI UDPv6 Protocol
257 /// client. After a packet is received, RxData and Status are filled in by the EFI UDPv6 Protocol
258 /// and the Event is signaled.
259 ///
260 typedef struct {
261  ///
262  /// This Event will be signaled after the Status field is updated by the EFI UDPv6 Protocol
263  /// driver. The type of Event must be EVT_NOTIFY_SIGNAL.
264  ///
266  ///
267  /// Will be set to one of the following values:
268  /// - EFI_SUCCESS: The receive or transmit operation completed successfully.
269  /// - EFI_ABORTED: The receive or transmit was aborted.
270  /// - EFI_TIMEOUT: The transmit timeout expired.
271  /// - EFI_NETWORK_UNREACHABLE: The destination network is unreachable. RxData is set to
272  /// NULL in this situation.
273  /// - EFI_HOST_UNREACHABLE: The destination host is unreachable. RxData is set to NULL in
274  /// this situation.
275  /// - EFI_PROTOCOL_UNREACHABLE: The UDP protocol is unsupported in the remote system.
276  /// RxData is set to NULL in this situation.
277  /// - EFI_PORT_UNREACHABLE: No service is listening on the remote port. RxData is set to
278  /// NULL in this situation.
279  /// - EFI_ICMP_ERROR: Some other Internet Control Message Protocol (ICMP) error report was
280  /// received. For example, packets are being sent too fast for the destination to receive them
281  /// and the destination sent an ICMP source quench report. RxData is set to NULL in this situation.
282  /// - EFI_DEVICE_ERROR: An unexpected system or network error occurred.
283  /// - EFI_SECURITY_VIOLATION: The transmit or receive was failed because of IPsec policy check.
284  /// - EFI_NO_MEDIA: There was a media error.
285  ///
287  union {
288  ///
289  /// When this token is used for receiving, RxData is a pointer to EFI_UDP6_RECEIVE_DATA.
290  ///
292  ///
293  /// When this token is used for transmitting, TxData is a pointer to EFI_UDP6_TRANSMIT_DATA.
294  ///
296  } Packet;
298 
299 /**
300  Read the current operational settings.
301 
302  The GetModeData() function copies the current operational settings of this EFI UDPv6 Protocol
303  instance into user-supplied buffers. This function is used optionally to retrieve the operational
304  mode data of underlying networks or drivers.
305 
306  @param[in] This Pointer to the EFI_UDP6_PROTOCOL instance.
307  @param[out] Udp6ConfigData The buffer in which the current UDP configuration data is returned.
308  @param[out] Ip6ModeData The buffer in which the current EFI IPv6 Protocol mode data is returned.
309  @param[out] MnpConfigData The buffer in which the current managed network configuration data is
310  returned.
311  @param[out] SnpModeData The buffer in which the simple network mode data is returned.
312 
313  @retval EFI_SUCCESS The mode data was read.
314  @retval EFI_NOT_STARTED When Udp6ConfigData is queried, no configuration data is available
315  because this instance has not been started.
316  @retval EFI_INVALID_PARAMETER This is NULL.
317 
318 **/
319 typedef
322  IN EFI_UDP6_PROTOCOL *This,
323  OUT EFI_UDP6_CONFIG_DATA *Udp6ConfigData OPTIONAL,
324  OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL,
327  );
328 
329 /**
330  Initializes, changes, or resets the operational parameters for this instance of the EFI UDPv6
331  Protocol.
332 
333  The Configure() function is used to do the following:
334  - Initialize and start this instance of the EFI UDPv6 Protocol.
335  - Change the filtering rules and operational parameters.
336  - Reset this instance of the EFI UDPv6 Protocol.
337 
338  Until these parameters are initialized, no network traffic can be sent or received by this instance.
339  This instance can be also reset by calling Configure() with UdpConfigData set to NULL.
340  Once reset, the receiving queue and transmitting queue are flushed and no traffic is allowed through
341  this instance.
342 
343  With different parameters in UdpConfigData, Configure() can be used to bind this instance to specified
344  port.
345 
346  @param[in] This Pointer to the EFI_UDP6_PROTOCOL instance.
347  @param[in] UdpConfigData Pointer to the buffer contained the configuration data.
348 
349  @retval EFI_SUCCESS The configuration settings were set, changed, or reset successfully.
350  @retval EFI_NO_MAPPING The underlying IPv6 driver was responsible for choosing a source
351  address for this instance, but no source address was available for use.
352  @retval EFI_INVALID_PARAMETER One or more following conditions are TRUE:
353  - This is NULL.
354  - UdpConfigData.StationAddress neither zero nor one of the configured IP
355  addresses in the underlying IPv6 driver.
356  - UdpConfigData.RemoteAddress is not a valid unicast IPv6 address if it
357  is not zero.
358  @retval EFI_ALREADY_STARTED The EFI UDPv6 Protocol instance is already started/configured and must be
359  stopped/reset before it can be reconfigured. Only TrafficClass, HopLimit,
360  ReceiveTimeout, and TransmitTimeout can be reconfigured without stopping
361  the current instance of the EFI UDPv6 Protocol.
362  @retval EFI_ACCESS_DENIED UdpConfigData.AllowDuplicatePort is FALSE and UdpConfigData.StationPort
363  is already used by other instance.
364  @retval EFI_OUT_OF_RESOURCES The EFI UDPv6 Protocol driver cannot allocate memory for this EFI UDPv6
365  Protocol instance.
366  @retval EFI_DEVICE_ERROR An unexpected network or system error occurred and this instance was not
367  opened.
368 
369 **/
370 typedef
373  IN EFI_UDP6_PROTOCOL *This,
374  IN EFI_UDP6_CONFIG_DATA *UdpConfigData OPTIONAL
375  );
376 
377 /**
378  Joins and leaves multicast groups.
379 
380  The Groups() function is used to join or leave one or more multicast group.
381  If the JoinFlag is FALSE and the MulticastAddress is NULL, then all currently joined groups are left.
382 
383  @param[in] This Pointer to the EFI_UDP6_PROTOCOL instance.
384  @param[in] JoinFlag Set to TRUE to join a multicast group. Set to FALSE to leave one
385  or all multicast groups.
386  @param[in] MulticastAddress Pointer to multicast group address to join or leave.
387 
388  @retval EFI_SUCCESS The operation completed successfully.
389  @retval EFI_NOT_STARTED The EFI UDPv6 Protocol instance has not been started.
390  @retval EFI_OUT_OF_RESOURCES Could not allocate resources to join the group.
391  @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:
392  - This is NULL.
393  - JoinFlag is TRUE and MulticastAddress is NULL.
394  - JoinFlag is TRUE and *MulticastAddress is not a valid multicast address.
395  @retval EFI_ALREADY_STARTED The group address is already in the group table (when JoinFlag is TRUE).
396  @retval EFI_NOT_FOUND The group address is not in the group table (when JoinFlag is FALSE).
397  @retval EFI_DEVICE_ERROR An unexpected system or network error occurred.
398 
399 **/
400 typedef
403  IN EFI_UDP6_PROTOCOL *This,
404  IN BOOLEAN JoinFlag,
405  IN EFI_IPv6_ADDRESS *MulticastAddress OPTIONAL
406  );
407 
408 /**
409  Queues outgoing data packets into the transmit queue.
410 
411  The Transmit() function places a sending request to this instance of the EFI UDPv6 Protocol,
412  alongside the transmit data that was filled by the user. Whenever the packet in the token is
413  sent out or some errors occur, the Token.Event will be signaled and Token.Status is updated.
414  Providing a proper notification function and context for the event will enable the user to
415  receive the notification and transmitting status.
416 
417  @param[in] This Pointer to the EFI_UDP6_PROTOCOL instance.
418  @param[in] Token Pointer to the completion token that will be placed into the
419  transmit queue.
420 
421  @retval EFI_SUCCESS The data has been queued for transmission.
422  @retval EFI_NOT_STARTED This EFI UDPv6 Protocol instance has not been started.
423  @retval EFI_NO_MAPPING The underlying IPv6 driver was responsible for choosing a source
424  address for this instance, but no source address was available
425  for use.
426  @retval EFI_INVALID_PARAMETER One or more of the following are TRUE:
427  - This is NULL.
428  - Token is NULL.
429  - Token.Event is NULL.
430  - Token.Packet.TxData is NULL.
431  - Token.Packet.TxData.FragmentCount is zero.
432  - Token.Packet.TxData.DataLength is not equal to the sum of fragment
433  lengths.
434  - One or more of the Token.Packet.TxData.FragmentTable[].FragmentLength
435  fields is zero.
436  - One or more of the Token.Packet.TxData.FragmentTable[].FragmentBuffer
437  fields is NULL.
438  - Token.Packet.TxData.UdpSessionData.DestinationAddress is not zero
439  and is not valid unicast Ipv6 address if UdpSessionData is not NULL.
440  - Token.Packet.TxData.UdpSessionData is NULL and this instance's
441  UdpConfigData.RemoteAddress is unspecified.
442  - Token.Packet.TxData.UdpSessionData.DestinationAddress is non-zero
443  when DestinationAddress is configured as non-zero when doing Configure()
444  for this EFI Udp6 protocol instance.
445  - Token.Packet.TxData.UdpSesionData.DestinationAddress is zero when
446  DestinationAddress is unspecified when doing Configure() for this
447  EFI Udp6 protocol instance.
448  @retval EFI_ACCESS_DENIED The transmit completion token with the same Token.Event was already
449  in the transmit queue.
450  @retval EFI_NOT_READY The completion token could not be queued because the transmit queue
451  is full.
452  @retval EFI_OUT_OF_RESOURCES Could not queue the transmit data.
453  @retval EFI_NOT_FOUND There is no route to the destination network or address.
454  @retval EFI_BAD_BUFFER_SIZE The data length is greater than the maximum UDP packet size.
455 
456 **/
457 typedef
460  IN EFI_UDP6_PROTOCOL *This,
462  );
463 
464 /**
465  Places an asynchronous receive request into the receiving queue.
466 
467  The Receive() function places a completion token into the receive packet queue. This function is
468  always asynchronous.
469  The caller must fill in the Token.Event field in the completion token, and this field cannot be
470  NULL. When the receive operation completes, the EFI UDPv6 Protocol driver updates the Token.Status
471  and Token.Packet.RxData fields and the Token.Event is signaled.
472  Providing a proper notification function and context for the event will enable the user to receive
473  the notification and receiving status. That notification function is guaranteed to not be re-entered.
474 
475  @param[in] This Pointer to the EFI_UDP6_PROTOCOL instance.
476  @param[in] Token Pointer to a token that is associated with the receive data descriptor.
477 
478  @retval EFI_SUCCESS The receive completion token was cached.
479  @retval EFI_NOT_STARTED This EFI UDPv6 Protocol instance has not been started.
480  @retval EFI_NO_MAPPING The underlying IPv6 driver was responsible for choosing a source
481  address for this instance, but no source address was available
482  for use.
483  @retval EFI_INVALID_PARAMETER One or more of the following is TRUE:
484  - This is NULL.
485  - Token is NULL.
486  - Token.Event is NULL.
487  @retval EFI_OUT_OF_RESOURCES The receive completion token could not be queued due to a lack of system
488  resources (usually memory).
489  @retval EFI_DEVICE_ERROR An unexpected system or network error occurred. The EFI UDPv6 Protocol
490  instance has been reset to startup defaults.
491  @retval EFI_ACCESS_DENIED A receive completion token with the same Token.Event was already in
492  the receive queue.
493  @retval EFI_NOT_READY The receive request could not be queued because the receive queue is full.
494 
495 **/
496 typedef
499  IN EFI_UDP6_PROTOCOL *This,
501  );
502 
503 /**
504  Aborts an asynchronous transmit or receive request.
505 
506  The Cancel() function is used to abort a pending transmit or receive request. If the token is in the
507  transmit or receive request queues, after calling this function, Token.Status will be set to
508  EFI_ABORTED and then Token.Event will be signaled. If the token is not in one of the queues,
509  which usually means that the asynchronous operation has completed, this function will not signal the
510  token and EFI_NOT_FOUND is returned.
511 
512  @param[in] This Pointer to the EFI_UDP6_PROTOCOL instance.
513  @param[in] Token Pointer to a token that has been issued by EFI_UDP6_PROTOCOL.Transmit()
514  or EFI_UDP6_PROTOCOL.Receive().If NULL, all pending tokens are aborted.
515 
516  @retval EFI_SUCCESS The asynchronous I/O request was aborted and Token.Event was signaled.
517  When Token is NULL, all pending requests are aborted and their events
518  are signaled.
519  @retval EFI_INVALID_PARAMETER This is NULL.
520  @retval EFI_NOT_STARTED This instance has not been started.
521  @retval EFI_NOT_FOUND When Token is not NULL, the asynchronous I/O request was not found in
522  the transmit or receive queue. It has either completed or was not issued
523  by Transmit() and Receive().
524 
525 **/
526 typedef
529  IN EFI_UDP6_PROTOCOL *This,
531  );
532 
533 /**
534  Polls for incoming data packets and processes outgoing data packets.
535 
536  The Poll() function can be used by network drivers and applications to increase the rate that data
537  packets are moved between the communications device and the transmit and receive queues.
538  In some systems, the periodic timer event in the managed network driver may not poll the underlying
539  communications device fast enough to transmit and/or receive all data packets without missing incoming
540  packets or dropping outgoing packets. Drivers and applications that are experiencing packet loss should
541  try calling the Poll() function more often.
542 
543  @param[in] This Pointer to the EFI_UDP6_PROTOCOL instance.
544 
545  @retval EFI_SUCCESS Incoming or outgoing data was processed.
546  @retval EFI_INVALID_PARAMETER This is NULL.
547  @retval EFI_DEVICE_ERROR An unexpected system or network error occurred.
548  @retval EFI_TIMEOUT Data was dropped out of the transmit and/or receive queue.
549  Consider increasing the polling rate.
550 
551 **/
552 typedef
555  IN EFI_UDP6_PROTOCOL *This
556  );
557 
558 ///
559 /// The EFI_UDP6_PROTOCOL defines an EFI UDPv6 Protocol session that can be used by any network drivers,
560 /// applications, or daemons to transmit or receive UDP packets. This protocol instance can either be
561 /// bound to a specified port as a service or connected to some remote peer as an active client.
562 /// Each instance has its own settings, such as group table, that are independent from each other.
563 ///
572 };
573 
576 
577 #endif
EFI_STATUS(EFIAPI * EFI_UDP6_CANCEL)(IN EFI_UDP6_PROTOCOL *This, IN EFI_UDP6_COMPLETION_TOKEN *Token OPTIONAL)
Aborts an asynchronous transmit or receive request.
Definition: Udp6.h:528
#define OPTIONAL
Passing the datum to the function is optional, and a NULL is passed if the value is not supplied.
Definition: Base.h:293
EFI_EVENT Event
This Event will be signaled after the Status field is updated by the EFI UDPv6 Protocol driver.
Definition: Udp6.h:265
EFI_UDP6_GET_MODE_DATA GetModeData
Definition: Udp6.h:565
EFI_UDP6_SERVICE_POINT is deprecated in the UEFI 2.4B and should not be used any more.
Definition: Udp6.h:36
The EFI UDPv6 Protocol client must fill this data structure before sending a packet.
Definition: Udp6.h:192
128 bit buffer containing a unique identifier value.
Definition: Base.h:216
EFI_TIME TimeStamp
Time when the EFI UDPv6 Protocol accepted the packet.
Definition: Udp6.h:227
FILE_LICENCE(BSD2_PATENT)
Definition: efi.h:63
The EFI_UDP6_COMPLETION_TOKEN structures are used for both transmit and receive operations.
Definition: Udp6.h:260
UINT32 ReceiveTimeout
The receive timeout value (number of microseconds) to be associated with each incoming packet.
Definition: Udp6.h:147
UINT8 TrafficClass
TrafficClass field in transmitted IPv6 packets.
Definition: Udp6.h:138
unsigned char BOOLEAN
UINT16 SourcePort
Port from which this packet is sent.
Definition: Udp6.h:108
EFI_IPv6_ADDRESS LocalAddress
The IPv6 address to which this instance of the EFI UDPv6 Protocol is bound.
Definition: Udp6.h:46
VOID * FragmentBuffer
Pointer to the fragment data buffer.
Definition: Udp6.h:90
EFI_IP6_MODE_DATA.
Definition: Ip6.h:308
unsigned int UINT32
Definition: ProcessorBind.h:99
EFI_STATUS(EFIAPI * EFI_UDP6_RECEIVE)(IN EFI_UDP6_PROTOCOL *This, IN EFI_UDP6_COMPLETION_TOKEN *Token)
Places an asynchronous receive request into the receiving queue.
Definition: Udp6.h:498
UINT16 StationPort
The port number to which this EFI UDPv6 Protocol instance is bound.
Definition: Udp6.h:171
EFI_HANDLE InstanceHandle
The EFI UDPv6 Protocol instance handle that is using this address/port pair.
Definition: Udp6.h:40
unsigned char UINT8
UINT32 FragmentLength
Length of the fragment data buffer.
Definition: Udp6.h:89
EFI_IPv6_ADDRESS RemoteAddress
The IP address of remote host to which this EFI UDPv6 Protocol instance is connecting.
Definition: Udp6.h:178
EFI_STATUS Status
Will be set to one of the following values:
Definition: Udp6.h:286
#define OUT
Definition: mlx_utils.h:29
UINT32 DataLength
The sum of the fragment data length.
Definition: Udp6.h:240
16-byte buffer.
Definition: Base.h:233
EFI_UDP6_RECEIVE_DATA is filled by the EFI UDPv6 Protocol driver when this EFI UDPv6 Protocol instanc...
Definition: Udp6.h:223
The EFI_UDP6_SESSION_DATA is used to retrieve the settings when receiving packets or to override the ...
Definition: Udp6.h:98
UINT16 RemotePort
The port number of the remote host to which this EFI UDPv6 Protocol instance is connecting.
Definition: Udp6.h:185
EFI_UDP6_SESSION_DATA UdpSession
The UDP session data including SourceAddress, SourcePort, DestinationAddress, and DestinationPort.
Definition: Udp6.h:236
EFI_UDP6_TRANSMIT_DATA * TxData
When this token is used for transmitting, TxData is a pointer to EFI_UDP6_TRANSMIT_DATA.
Definition: Udp6.h:295
EFI_HANDLE DriverHandle
The handle of the driver that creates this entry.
Definition: Udp6.h:71
UINT16 LocalPort
The port number in host byte order on which the service is listening.
Definition: Udp6.h:50
unsigned short UINT16
EFI_UDP6_SESSION_DATA * UdpSessionData
If not NULL, the data that is used to override the transmitting settings.Only the two filed UdpSessio...
Definition: Udp6.h:198
FILE_SECBOOT(PERMITTED)
EFI_UDP6_RECEIVE Receive
Definition: Udp6.h:569
#define EFIAPI
EFI_STATUS(EFIAPI * EFI_UDP6_GROUPS)(IN EFI_UDP6_PROTOCOL *This, IN BOOLEAN JoinFlag, IN EFI_IPv6_ADDRESS *MulticastAddress OPTIONAL)
Joins and leaves multicast groups.
Definition: Udp6.h:402
This file defines the EFI IPv6 (Internet Protocol version 6) Protocol interface.
EFI_IPv6_ADDRESS SourceAddress
Address from which this packet is sent.
Definition: Udp6.h:103
UINT8 HopLimit
HopLimit field in transmitted IPv6 packets.
Definition: Udp6.h:142
#define VOID
Undeclared type.
Definition: Base.h:272
EFI_IPv6_ADDRESS RemoteAddress
The IPv6 address of the remote host.
Definition: Udp6.h:55
EFI Time Abstraction: Year: 1900 - 9999 Month: 1 - 12 Day: 1 - 31 Hour: 0 - 23 Minute: 0 - 59 Second:...
Definition: UefiBaseType.h:71
#define IN
Definition: mlx_utils.h:28
UINT32 FragmentCount
Number of fragments.
Definition: Udp6.h:244
UINT32 DataLength
Sum of the fragment data length.
Definition: Udp6.h:202
UINT16 RemotePort
The port number in host byte order on which the remote host is listening.
Definition: Udp6.h:60
EFI_UDP6_CANCEL Cancel
Definition: Udp6.h:570
EFI_UDP6_CONFIGURE Configure
Definition: Udp6.h:566
EFI_STATUS(EFIAPI * EFI_UDP6_CONFIGURE)(IN EFI_UDP6_PROTOCOL *This, IN EFI_UDP6_CONFIG_DATA *UdpConfigData OPTIONAL)
Initializes, changes, or resets the operational parameters for this instance of the EFI UDPv6 Protoco...
Definition: Udp6.h:372
UINT32 TransmitTimeout
The transmit timeout value (number of microseconds) to be associated with each outgoing packet.
Definition: Udp6.h:152
EFI_STATUS(EFIAPI * EFI_UDP6_POLL)(IN EFI_UDP6_PROTOCOL *This)
Polls for incoming data packets and processes outgoing data packets.
Definition: Udp6.h:554
RETURN_STATUS EFI_STATUS
Function return status for EFI API.
Definition: UefiBaseType.h:32
BOOLEAN AcceptAnyPort
Set to TRUE to accept UDP packets that are sent to any port.
Definition: Udp6.h:129
UINT32 FragmentCount
Number of fragments.
Definition: Udp6.h:206
BOOLEAN AllowDuplicatePort
Set to TRUE to allow this EFI UDPv6 Protocol child instance to open a port number that is already bei...
Definition: Udp6.h:134
EFI_GUID gEfiUdp6ServiceBindingProtocolGuid
UINT16 DestinationPort
Port to which this packet is sent.
Definition: Udp6.h:118
EFI_GUID gEfiUdp6ProtocolGuid
EFI_UDP6_FRAGMENT_DATA allows multiple receive or transmit buffers to be specified.
Definition: Udp6.h:88
EFI_STATUS(EFIAPI * EFI_UDP6_TRANSMIT)(IN EFI_UDP6_PROTOCOL *This, IN EFI_UDP6_COMPLETION_TOKEN *Token)
Queues outgoing data packets into the transmit queue.
Definition: Udp6.h:459
EFI_UDP6_VARIABLE_DATA is deprecated in the UEFI 2.4B and should not be used any more.
Definition: Udp6.h:67
EFI_UDP6_RECEIVE_DATA * RxData
When this token is used for receiving, RxData is a pointer to EFI_UDP6_RECEIVE_DATA.
Definition: Udp6.h:291
EFI_EVENT RecycleSignal
Indicates the event to signal when the received data has been processed.
Definition: Udp6.h:231
UINT32 ServiceCount
The number of address/port pairs that follow this data structure.
Definition: Udp6.h:75
EFI_IPv6_ADDRESS DestinationAddress
Address to which this packet is sent.
Definition: Udp6.h:113
EFI_IPv6_ADDRESS StationAddress
The station IP address that will be assigned to this EFI UDPv6 Protocol instance.
Definition: Udp6.h:164
EFI_STATUS(EFIAPI * EFI_UDP6_GET_MODE_DATA)(IN EFI_UDP6_PROTOCOL *This, OUT EFI_UDP6_CONFIG_DATA *Udp6ConfigData OPTIONAL, OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL)
Read the current operational settings.
Definition: Udp6.h:321
The EFI_UDP6_PROTOCOL defines an EFI UDPv6 Protocol session that can be used by any network drivers,...
Definition: Udp6.h:564
Definition: efi.h:62
EFI_UDP6_TRANSMIT Transmit
Definition: Udp6.h:568
EFI_UDP6_POLL Poll
Definition: Udp6.h:571
BOOLEAN AcceptPromiscuous
Set to TRUE to accept UDP packets that are sent to any address.
Definition: Udp6.h:125
EFI_UDP6_GROUPS Groups
Definition: Udp6.h:567