From abbfadd7919f2c760d9de877e040c6ae96f40e94 Mon Sep 17 00:00:00 2001 From: vanjeff Date: Thu, 17 Sep 2009 02:37:58 +0000 Subject: [PATCH] Updated network related definitions. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9279 6f19259b-4bc3-4df7-8a09-765794883524 --- MdePkg/Include/Protocol/Dhcp6.h | 20 ++++++-- MdePkg/Include/Protocol/Ip6.h | 36 +++++++++++++++ MdePkg/Include/Protocol/Mtftp4.h | 61 ++++++++++++++---------- MdePkg/Include/Protocol/Mtftp6.h | 79 +++++++++++++++++++------------- MdePkg/Include/Protocol/Tcp4.h | 59 ++++++++++++++++++++++++ MdePkg/Include/Protocol/Tcp6.h | 6 +++ 6 files changed, 202 insertions(+), 59 deletions(-) diff --git a/MdePkg/Include/Protocol/Dhcp6.h b/MdePkg/Include/Protocol/Dhcp6.h index 371579b265..3f12f3894c 100644 --- a/MdePkg/Include/Protocol/Dhcp6.h +++ b/MdePkg/Include/Protocol/Dhcp6.h @@ -144,21 +144,31 @@ typedef enum { #define EFI_DHCP6_IA_TYPE_TA 4 #pragma pack(1) +/// +/// EFI_DHCP6_PACKET_OPTION +/// defines the format of the DHCPv6 option, See RFC 3315 for more information. +/// This data structure is used to reference option data that is packed in the DHCPv6 packet. +/// typedef struct { /// - /// The DHCPv6 option code. + /// The DHCPv6 option code, stored in network order. /// UINT16 OpCode; /// - /// Length of the DHCPv6 option data. From the first byte to the last byte of the Data field. + /// Length of the DHCPv6 option data, stored in network order. + /// From the first byte to the last byte of the Data field. /// UINT16 OpLen; /// - /// The data for the DHCPv6 option. + /// The data for the DHCPv6 option, stored in network order. /// UINT8 Data[1]; } EFI_DHCP6_PACKET_OPTION; +/// +/// EFI_DHCP6_HEADER +/// defines the format of the DHCPv6 header. See RFC 3315 for more information. +/// typedef struct{ /// /// The DHCPv6 transaction ID. @@ -170,6 +180,10 @@ typedef struct{ UINT32 TransactionId:24; } EFI_DHCP6_HEADER; +/// +/// EFI_DHCP6_PACKET +/// defines the format of the DHCPv6 packet. See RFC 3315 for more information. +/// typedef struct { /// /// Size of the EFI_DHCP6_PACKET buffer. diff --git a/MdePkg/Include/Protocol/Ip6.h b/MdePkg/Include/Protocol/Ip6.h index 3053a28a5b..e26bc8c94b 100644 --- a/MdePkg/Include/Protocol/Ip6.h +++ b/MdePkg/Include/Protocol/Ip6.h @@ -42,6 +42,42 @@ typedef struct _EFI_IP6_PROTOCOL EFI_IP6_PROTOCOL; +/// +/// EFI_IP6_ADDRESS_PAIR +/// +typedef struct{ + /// + /// The EFI IPv6 Protocol instance handle that is using this address/prefix pair. + /// + EFI_HANDLE InstanceHandle; + /// + /// IPv6 address in network byte order. + /// + EFI_IPv6_ADDRESS Ip6Address; + /// + /// The length of the prefix associated with the Ip6Address. + /// + UINT8 PrefixLength; +} EFI_IP6_ADDRESS_PAIR; + +/// +/// EFI_IP6_VARIABLE_DATA +/// +typedef struct { + /// + /// The handle of the driver that creates this entry. + /// + EFI_HANDLE DriverHandle; + /// + /// The number of IPv6 address pairs that follow this data structure. + /// + UINT32 AddressCount; + /// + /// List of IPv6 address pairs that are currently in use. + /// + EFI_IP6_ADDRESS_PAIR AddressPairs[1]; +} EFI_IP6_VARIABLE_DATA; + /// /// ICMPv6 type definitions for error messages /// diff --git a/MdePkg/Include/Protocol/Mtftp4.h b/MdePkg/Include/Protocol/Mtftp4.h index a7b251e001..04095acffb 100644 --- a/MdePkg/Include/Protocol/Mtftp4.h +++ b/MdePkg/Include/Protocol/Mtftp4.h @@ -322,20 +322,31 @@ EFI_STATUS @param Packet The pointer to the received packet. This buffer must be freed by the caller. - @retval EFI_SUCCESS An MTFTPv4 OACK packet was received and is in the Buffer. - @retval EFI_INVALID_PARAMETER One or more parameters are invalid. - @retval EFI_UNSUPPORTED One or more options in the OptionList are in the - unsupported list of structure EFI_MTFTP4_MODE_DATA. - @retval EFI_NOT_STARTED The EFI MTFTPv4 Protocol driver has not been started. - @retval EFI_NO_MAPPING When using a default address, configuration (DHCP, BOOTP, - RARP, etc.) has not finished yet. - @retval EFI_ACCESS_DENIED The previous operation has not completed yet. - @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. - @retval EFI_TFTP_ERROR An MTFTPv4 ERROR packet was received and is in the buffer. - @retval EFI_ICMP_ERROR An ICMP ERROR packet was received and is in the Buffer. - @retval EFI_PROTOCOL_ERROR An unexpected MTFTPv4 packet was received and is in the buffer. - @retval EFI_TIMEOUT No responses were received from the MTFTPv4 server. - @retval EFI_DEVICE_ERROR An unexpected network error or system error occurred. + @retval EFI_SUCCESS An MTFTPv4 OACK packet was received and is in the Packet. + @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: + - This is NULL. + - Filename is NULL. + - OptionCount is not zero and OptionList is NULL. + - One or more options in OptionList have wrong format. + - PacketLength is NULL. + - One or more IPv4 addresses in OverrideData are not valid + unicast IPv4 addresses if OverrideData is not NULL. + @retval EFI_UNSUPPORTED One or more options in the OptionList are in the + unsupported list of structure EFI_MTFTP4_MODE_DATA. + @retval EFI_NOT_STARTED The EFI MTFTPv4 Protocol driver has not been started. + @retval EFI_NO_MAPPING When using a default address, configuration (DHCP, BOOTP, + RARP, etc.) has not finished yet. + @retval EFI_ACCESS_DENIED The previous operation has not completed yet. + @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. + @retval EFI_TFTP_ERROR An MTFTPv4 ERROR packet was received and is in the Packet. + @retval EFI_NETWORK_UNREACHABLE An ICMP network unreachable error packet was received and the Packet is set to NULL. + @retval EFI_HOST_UNREACHABLE An ICMP host unreachable error packet was received and the Packet is set to NULL. + @retval EFI_PROTOCOL_UNREACHABLE An ICMP protocol unreachable error packet was received and the Packet is set to NULL. + @retval EFI_PORT_UNREACHABLE An ICMP port unreachable error packet was received and the Packet is set to NULL. + @retval EFI_ICMP_ERROR Some other ICMP ERROR packet was received and is in the Buffer. + @retval EFI_PROTOCOL_ERROR An unexpected MTFTPv4 packet was received and is in the Packet. + @retval EFI_TIMEOUT No responses were received from the MTFTPv4 server. + @retval EFI_DEVICE_ERROR An unexpected network error or system error occurred. **/ typedef @@ -391,15 +402,19 @@ EFI_STATUS @param Token Pointer to the token structure to provide the parameters that are used in this operation. - @retval EFI_SUCCESS The data file has been transferred successfully. - @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. - @retval EFI_BUFFER_TOO_SMALL BufferSize is not large enough to hold the downloaded data - in downloading process. - @retval EFI_ABORTED Current operation is aborted by user. - @retval EFI_ICMP_ERROR An ICMP ERROR packet was received. - @retval EFI_TIMEOUT No responses were received from the MTFTPv4 server. - @retval EFI_TFTP_ERROR An MTFTPv4 ERROR packet was received. - @retval EFI_DEVICE_ERROR An unexpected network error or system error occurred. + @retval EFI_SUCCESS The data file has been transferred successfully. + @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. + @retval EFI_BUFFER_TOO_SMALL BufferSize is not zero but not large enough to hold the + downloaded data in downloading process. + @retval EFI_ABORTED Current operation is aborted by user. + @retval EFI_NETWORK_UNREACHABLE An ICMP network unreachable error packet was received. + @retval EFI_HOST_UNREACHABLE An ICMP host unreachable error packet was received. + @retval EFI_PROTOCOL_UNREACHABLE An ICMP protocol unreachable error packet was received. + @retval EFI_PORT_UNREACHABLE An ICMP port unreachable error packet was received. + @retval EFI_ICMP_ERROR Some other ICMP ERROR packet was received. + @retval EFI_TIMEOUT No responses were received from the MTFTPv4 server. + @retval EFI_TFTP_ERROR An MTFTPv4 ERROR packet was received. + @retval EFI_DEVICE_ERROR An unexpected network error or system error occurred. **/ typedef diff --git a/MdePkg/Include/Protocol/Mtftp6.h b/MdePkg/Include/Protocol/Mtftp6.h index 6c432f7000..c22ab3a77c 100644 --- a/MdePkg/Include/Protocol/Mtftp6.h +++ b/MdePkg/Include/Protocol/Mtftp6.h @@ -503,11 +503,16 @@ EFI_STATUS - MtftpConfigData.StationIp is neither zero nor one of the configured IP addresses in the underlying IPv6 driver. - MtftpCofigData.ServerIp is not a valid IPv6 unicast address. - - The StationIP and LocalPort is already in use - @retval EFI_ACCESS_DENIED The configuration could not be changed at this time because there - is some MTFTP background operation in progress. + @retval EFI_ACCESS_DENIED - The configuration could not be changed at this time because there + is some MTFTP background operation in progress. + - MtftpCofigData.LocalPort is already in use. @retval EFI_NO_MAPPING The underlying IPv6 driver was responsible for choosing a source - address for this instance, but no source address was available for use + address for this instance, but no source address was available for use. + @retval EFI_OUT_OF_RESOURCES The EFI MTFTPv6 Protocol driver instance data could not be + allocated. + @retval EFI_DEVICE_ERROR An unexpected system or network error occurred. The EFI + MTFTPv6 Protocol driver instance is not configured. + **/ typedef @@ -538,26 +543,30 @@ EFI_STATUS @param[out] Packet The pointer to the received packet. This buffer must be freed by the caller. - @retval EFI_SUCCESS An MTFTPv6 OACK packet was received and is in the Buffer. - @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: - - This is NULL. - - Filename is NULL - - OptionCount is not zero and OptionList is NULL. - - One or more options in OptionList have wrong format. - - PacketLength is NULL. - - OverrideData.ServerIp is not valid unicast IPv6 addresses. - @retval EFI_UNSUPPORTED One or more options in the OptionList are unsupported by - this implementation. - @retval EFI_NOT_STARTED The EFI MTFTPv6 Protocol driver has not been started. - @retval EFI_NO_MAPPING The underlying IPv6 driver was responsible for choosing a source - address for this instance, but no source address was available for use. - @retval EFI_ACCESS_DENIED The previous operation has not completed yet. - @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. - @retval EFI_TFTP_ERROR An MTFTPv6 ERROR packet was received and is in the Packet. - @retval EFI_ICMP_ERROR An ICMP ERROR packet was received and the Packet is set to NULL. - @retval EFI_PROTOCOL_ERROR An unexpected MTFTPv6 packet was received and is in the Packet. - @retval EFI_TIMEOUT No responses were received from the MTFTPv6 server. - @retval EFI_DEVICE_ERROR An unexpected network error or system error occurred. + @retval EFI_SUCCESS An MTFTPv6 OACK packet was received and is in the Packet. + @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: + - This is NULL. + - Filename is NULL + - OptionCount is not zero and OptionList is NULL. + - One or more options in OptionList have wrong format. + - PacketLength is NULL. + - OverrideData.ServerIp is not valid unicast IPv6 addresses. + @retval EFI_UNSUPPORTED One or more options in the OptionList are unsupported by + this implementation. + @retval EFI_NOT_STARTED The EFI MTFTPv6 Protocol driver has not been started. + @retval EFI_NO_MAPPING The underlying IPv6 driver was responsible for choosing a source + address for this instance, but no source address was available for use. + @retval EFI_ACCESS_DENIED The previous operation has not completed yet. + @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. + @retval EFI_TFTP_ERROR An MTFTPv6 ERROR packet was received and is in the Packet. + @retval EFI_NETWORK_UNREACHABLE An ICMP network unreachable error packet was received and the Packet is set to NULL. + @retval EFI_HOST_UNREACHABLE An ICMP host unreachable error packet was received and the Packet is set to NULL. + @retval EFI_PROTOCOL_UNREACHABLE An ICMP protocol unreachable error packet was received and the Packet is set to NULL. + @retval EFI_PORT_UNREACHABLE An ICMP port unreachable error packet was received and the Packet is set to NULL. + @retval EFI_ICMP_ERROR Some other ICMP ERROR packet was received and the Packet is set to NULL. + @retval EFI_PROTOCOL_ERROR An unexpected MTFTPv6 packet was received and is in the Packet. + @retval EFI_TIMEOUT No responses were received from the MTFTPv6 server. + @retval EFI_DEVICE_ERROR An unexpected network error or system error occurred. **/ typedef @@ -632,15 +641,19 @@ EFI_STATUS @param[in] Token Pointer to the token structure to provide the parameters that are used in this operation. - @retval EFI_SUCCESS The data file has been transferred successfully. - @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. - @retval EFI_BUFFER_TOO_SMALL BufferSize is not large enough to hold the downloaded data - in downloading process. - @retval EFI_ABORTED Current operation is aborted by user. - @retval EFI_ICMP_ERROR An ICMP ERROR packet was received. - @retval EFI_TIMEOUT No responses were received from the MTFTPv6 server. - @retval EFI_TFTP_ERROR An MTFTPv6 ERROR packet was received. - @retval EFI_DEVICE_ERROR An unexpected network error or system error occurred. + @retval EFI_SUCCESS The data file has been transferred successfully. + @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. + @retval EFI_BUFFER_TOO_SMALL BufferSize is not zero but not large enough to hold the + downloaded data in downloading process. + @retval EFI_ABORTED Current operation is aborted by user. + @retval EFI_NETWORK_UNREACHABLE An ICMP network unreachable error packet was received. + @retval EFI_HOST_UNREACHABLE An ICMP host unreachable error packet was received. + @retval EFI_PROTOCOL_UNREACHABLE An ICMP protocol unreachable error packet was received. + @retval EFI_PORT_UNREACHABLE An ICMP port unreachable error packet was received. + @retval EFI_ICMP_ERROR An ICMP ERROR packet was received. + @retval EFI_TIMEOUT No responses were received from the MTFTPv6 server. + @retval EFI_TFTP_ERROR An MTFTPv6 ERROR packet was received. + @retval EFI_DEVICE_ERROR An unexpected network error or system error occurred. **/ typedef diff --git a/MdePkg/Include/Protocol/Tcp4.h b/MdePkg/Include/Protocol/Tcp4.h index b233fd9b71..71aec843b6 100644 --- a/MdePkg/Include/Protocol/Tcp4.h +++ b/MdePkg/Include/Protocol/Tcp4.h @@ -118,6 +118,31 @@ typedef struct { } EFI_TCP4_COMPLETION_TOKEN; typedef struct { + /// + /// The Status in the CompletionToken will be set to one of + /// the following values if the active open succeeds or an unexpected + /// error happens: + /// EFI_SUCCESS: The active open succeeds and the instance's + /// state is Tcp4StateEstablished. + /// EFI_CONNECTION_RESET: The connect fails because the connection is reset + /// either by instance itself or the communication peer. + /// EFI_CONNECTION_REFUSED: The connect fails because this connection is initiated with + /// an active open and the connection is refused. + /// EFI_ABORTED: The active open is aborted. + /// EFI_TIMEOUT: The connection establishment timer expires and + /// no more specific information is available. + /// EFI_NETWORK_UNREACHABLE: The active open fails because + /// an ICMP network unreachable error is received. + /// EFI_HOST_UNREACHABLE: The active open fails because an + /// ICMP host unreachable error is received. + /// EFI_PROTOCOL_UNREACHABLE: The active open fails + /// because an ICMP protocol unreachable error is received. + /// EFI_PORT_UNREACHABLE: The connection establishment + /// timer times out and an ICMP port unreachable error is received. + /// EFI_ICMP_ERROR: The connection establishment timer timeout and some other ICMP + /// error is received. + /// EFI_DEVICE_ERROR: An unexpected system or network error occurred. + /// EFI_TCP4_COMPLETION_TOKEN CompletionToken; } EFI_TCP4_CONNECTION_TOKEN; @@ -147,9 +172,42 @@ typedef struct { } EFI_TCP4_TRANSMIT_DATA; typedef struct { + /// + /// When transmission finishes or meets any unexpected error it will + /// be set to one of the following values: + /// EFI_SUCCESS: The receiving or transmission operation + /// completes successfully. + /// EFI_CONNECTION_FIN: The receiving operation fails because the communication peer + /// has closed the connection and there is no more data in the + /// receive buffer of the instance. + /// EFI_CONNECTION_RESET: The receiving or transmission operation fails + /// because this connection is reset either by instance + /// itself or the communication peer. + /// EFI_ABORTED: The receiving or transmission is aborted. + /// EFI_TIMEOUT: The transmission timer expires and no more + /// specific information is available. + /// EFI_NETWORK_UNREACHABLE: The transmission fails + /// because an ICMP network unreachable error is received. + /// EFI_HOST_UNREACHABLE: The transmission fails because an + /// ICMP host unreachable error is received. + /// EFI_PROTOCOL_UNREACHABLE: The transmission fails + /// because an ICMP protocol unreachable error is received. + /// EFI_PORT_UNREACHABLE: The transmission fails and an + /// ICMP port unreachable error is received. + /// EFI_ICMP_ERROR: The transmission fails and some other + /// ICMP error is received. + /// EFI_DEVICE_ERROR: An unexpected system or network error occurs. + /// EFI_NO_MEDIA: There was a media error. + /// EFI_TCP4_COMPLETION_TOKEN CompletionToken; union { + /// + /// When this token is used for receiving, RxData is a pointer to EFI_TCP4_RECEIVE_DATA. + /// EFI_TCP4_RECEIVE_DATA *RxData; + /// + /// When this token is used for transmitting, TxData is a pointer to EFI_TCP4_TRANSMIT_DATA. + /// EFI_TCP4_TRANSMIT_DATA *TxData; } Packet; } EFI_TCP4_IO_TOKEN; @@ -454,6 +512,7 @@ EFI_STATUS @retval EFI_NOT_FOUND The asynchronous I/O request isn't found in the transmission or receive queue. It has either completed or wasn't issued by Transmit() and Receive(). + @retval EFI_UNSUPPORTED The implementation does not support this function. **/ typedef diff --git a/MdePkg/Include/Protocol/Tcp6.h b/MdePkg/Include/Protocol/Tcp6.h index 3af54b91f4..7b851796cf 100644 --- a/MdePkg/Include/Protocol/Tcp6.h +++ b/MdePkg/Include/Protocol/Tcp6.h @@ -289,6 +289,8 @@ typedef struct { /// state is Tcp6StateEstablished. /// EFI_CONNECTION_RESET: The connect fails because the connection is reset /// either by instance itself or the communication peer. + /// EFI_CONNECTION_REFUSED: The receiving or transmission operation fails because this + /// connection is refused. /// EFI_ABORTED: The active open is aborted. /// EFI_TIMEOUT: The connection establishment timer expires and /// no more specific information is available. @@ -409,6 +411,9 @@ typedef struct { /// be set to one of the following values: /// EFI_SUCCESS: The receiving or transmission operation /// completes successfully. + /// EFI_CONNECTION_FIN: The receiving operation fails because the communication peer + /// has closed the connection and there is no more data in the + /// receive buffer of the instance. /// EFI_CONNECTION_RESET: The receiving or transmission operation fails /// because this connection is reset either by instance /// itself or the communication peer. @@ -796,6 +801,7 @@ EFI_STATUS @retval EFI_NOT_FOUND The asynchronous I/O request isn't found in the transmission or receive queue. It has either completed or wasn't issued by Transmit() and Receive(). + @retval EFI_UNSUPPORTED The implementation does not support this function. **/ typedef