1. Update the UdpIo to a combined UdpIo to support both v4 and v6 stack.
2. Update Dhcp4 and Mtftp4 driver to adopt the combined UdpIo. 3. Clean up coding style problems in combined IpIoLib/NetLib. Update Tcp4 and Udp4 to adopt the changes. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9382 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -136,7 +136,7 @@ IpIoCreateIpChildOpenProtocol (
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_HANDLE *ChildHandle,
|
||||
IN IP_VERSION IpVersion,
|
||||
IN UINT8 IpVersion,
|
||||
OUT VOID **Interface
|
||||
)
|
||||
{
|
||||
@@ -213,7 +213,7 @@ IpIoCloseProtocolDestroyIpChild (
|
||||
IN EFI_HANDLE ControllerHandle,
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_HANDLE ChildHandle,
|
||||
IN IP_VERSION IpVersion
|
||||
IN UINT8 IpVersion
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -274,7 +274,7 @@ IpIoIcmpv4Handler (
|
||||
{
|
||||
IP4_ICMP_ERROR_HEAD *IcmpHdr;
|
||||
EFI_IP4_HEADER *IpHdr;
|
||||
ICMP_ERROR IcmpErr;
|
||||
UINT8 IcmpErr;
|
||||
UINT8 *PayLoadHdr;
|
||||
UINT8 Type;
|
||||
UINT8 Code;
|
||||
@@ -307,7 +307,7 @@ IpIoIcmpv4Handler (
|
||||
case ICMP_CODE_UNREACH_PROTOCOL:
|
||||
case ICMP_CODE_UNREACH_PORT:
|
||||
case ICMP_CODE_UNREACH_SRCFAIL:
|
||||
IcmpErr = (ICMP_ERROR) (ICMP_ERR_UNREACH_NET + Code);
|
||||
IcmpErr = (UINT8) (ICMP_ERR_UNREACH_NET + Code);
|
||||
|
||||
break;
|
||||
|
||||
@@ -342,7 +342,7 @@ IpIoIcmpv4Handler (
|
||||
return EFI_ABORTED;
|
||||
}
|
||||
|
||||
IcmpErr = (ICMP_ERROR) (Code + ICMP_ERR_TIMXCEED_INTRANS);
|
||||
IcmpErr = (UINT8) (Code + ICMP_ERR_TIMXCEED_INTRANS);
|
||||
|
||||
break;
|
||||
|
||||
@@ -403,7 +403,7 @@ IpIoIcmpv6Handler (
|
||||
{
|
||||
IP6_ICMP_ERROR_HEAD *IcmpHdr;
|
||||
EFI_IP6_HEADER *IpHdr;
|
||||
ICMP6_ERROR IcmpErr;
|
||||
UINT8 IcmpErr;
|
||||
UINT8 *PayLoadHdr;
|
||||
UINT8 Type;
|
||||
UINT8 Code;
|
||||
@@ -470,7 +470,7 @@ IpIoIcmpv6Handler (
|
||||
return EFI_ABORTED;
|
||||
}
|
||||
|
||||
IcmpErr = (ICMP6_ERROR) (ICMP6_ERR_TIMXCEED_HOPLIMIT + Code);
|
||||
IcmpErr = (UINT8) (ICMP6_ERR_TIMXCEED_HOPLIMIT + Code);
|
||||
|
||||
break;
|
||||
|
||||
@@ -479,7 +479,7 @@ IpIoIcmpv6Handler (
|
||||
return EFI_ABORTED;
|
||||
}
|
||||
|
||||
IcmpErr = (ICMP6_ERROR) (ICMP6_ERR_PARAMPROB_HEADER + Code);
|
||||
IcmpErr = (UINT8) (ICMP6_ERR_PARAMPROB_HEADER + Code);
|
||||
|
||||
break;
|
||||
|
||||
@@ -538,7 +538,7 @@ IpIoIcmpv6Handler (
|
||||
|
||||
NetbufTrim (Pkt, TrimBytes, TRUE);
|
||||
|
||||
IpIo->PktRcvdNotify (EFI_ICMP_ERROR, (ICMP_ERROR) IcmpErr, Session, Pkt, IpIo->RcvdContext);
|
||||
IpIo->PktRcvdNotify (EFI_ICMP_ERROR, IcmpErr, Session, Pkt, IpIo->RcvdContext);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
@@ -1098,7 +1098,7 @@ IpIoListenHandlerDpc (
|
||||
|
||||
if (EFI_SUCCESS == Status) {
|
||||
|
||||
IpIo->PktRcvdNotify (EFI_SUCCESS, (ICMP_ERROR) 0, &Session, Pkt, IpIo->RcvdContext);
|
||||
IpIo->PktRcvdNotify (EFI_SUCCESS, 0, &Session, Pkt, IpIo->RcvdContext);
|
||||
} else {
|
||||
//
|
||||
// Status is EFI_ICMP_ERROR
|
||||
@@ -1170,7 +1170,7 @@ EFIAPI
|
||||
IpIoCreate (
|
||||
IN EFI_HANDLE Image,
|
||||
IN EFI_HANDLE Controller,
|
||||
IN IP_VERSION IpVersion
|
||||
IN UINT8 IpVersion
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
@@ -1264,7 +1264,7 @@ IpIoOpen (
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
VOID *Ip;
|
||||
IP_VERSION IpVersion;
|
||||
UINT8 IpVersion;
|
||||
|
||||
if (IpIo->IsConfigured) {
|
||||
return EFI_ACCESS_DENIED;
|
||||
@@ -1379,7 +1379,7 @@ IpIoStop (
|
||||
EFI_STATUS Status;
|
||||
VOID *Ip;
|
||||
IP_IO_IP_INFO *IpInfo;
|
||||
IP_VERSION IpVersion;
|
||||
UINT8 IpVersion;
|
||||
|
||||
if (!IpIo->IsConfigured) {
|
||||
return EFI_SUCCESS;
|
||||
@@ -1728,7 +1728,7 @@ IpIoConfigIp (
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
VOID *Ip;
|
||||
IP_VERSION IpVersion;
|
||||
UINT8 IpVersion;
|
||||
EFI_IP4_MODE_DATA Ip4ModeData;
|
||||
EFI_IP6_MODE_DATA Ip6ModeData;
|
||||
|
||||
@@ -1885,7 +1885,7 @@ IpIoRemoveIp (
|
||||
)
|
||||
{
|
||||
|
||||
IP_VERSION IpVersion;
|
||||
UINT8 IpVersion;
|
||||
|
||||
ASSERT (IpInfo->RefCnt > 0);
|
||||
|
||||
@@ -1957,7 +1957,7 @@ IP_IO_IP_INFO *
|
||||
EFIAPI
|
||||
IpIoFindSender (
|
||||
IN OUT IP_IO **IpIo,
|
||||
IN IP_VERSION IpVersion,
|
||||
IN UINT8 IpVersion,
|
||||
IN EFI_IP_ADDRESS *Src
|
||||
)
|
||||
{
|
||||
@@ -2021,14 +2021,14 @@ IpIoFindSender (
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
IpIoGetIcmpErrStatus (
|
||||
IN ICMP_ERROR IcmpError,
|
||||
IN IP_VERSION IpVersion,
|
||||
IN UINT8 IcmpError,
|
||||
IN UINT8 IpVersion,
|
||||
OUT BOOLEAN *IsHard OPTIONAL,
|
||||
OUT BOOLEAN *Notify OPTIONAL
|
||||
)
|
||||
{
|
||||
if (IpVersion == IP_VERSION_4 ) {
|
||||
ASSERT ((IcmpError >= ICMP_ERR_UNREACH_NET) && (IcmpError <= ICMP_ERR_PARAMPROB));
|
||||
ASSERT (IcmpError <= ICMP_ERR_PARAMPROB);
|
||||
|
||||
if (IsHard != NULL) {
|
||||
*IsHard = mIcmpErrMap[IcmpError].IsHard;
|
||||
@@ -2066,7 +2066,7 @@ IpIoGetIcmpErrStatus (
|
||||
|
||||
} else if (IpVersion == IP_VERSION_6) {
|
||||
|
||||
ASSERT ((IcmpError >= ICMP6_ERR_UNREACH_NET) && (IcmpError <= ICMP6_ERR_PARAMPROB_IPV6OPTION));
|
||||
ASSERT (IcmpError <= ICMP6_ERR_PARAMPROB_IPV6OPTION);
|
||||
|
||||
if (IsHard != NULL) {
|
||||
*IsHard = mIcmp6ErrMap[IcmpError].IsHard;
|
||||
|
@@ -222,28 +222,60 @@ Ip6IsValidUnicast (
|
||||
IN EFI_IPv6_ADDRESS *Ip6
|
||||
)
|
||||
{
|
||||
UINT8 t;
|
||||
UINT8 i;
|
||||
UINT8 Byte;
|
||||
UINT8 Index;
|
||||
|
||||
if (Ip6->Addr[0] == 0xFF) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
for (i = 0; i < 15; i++) {
|
||||
if (Ip6->Addr[i] != 0) {
|
||||
for (Index = 0; Index < 15; Index++) {
|
||||
if (Ip6->Addr[Index] != 0) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
t = Ip6->Addr[i];
|
||||
Byte = Ip6->Addr[Index];
|
||||
|
||||
if (t == 0x0 || t == 0x1) {
|
||||
if (Byte == 0x0 || Byte == 0x1) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
Switches the endianess of an IPv6 address
|
||||
|
||||
This function swaps the bytes in a 128-bit IPv6 address to switch the value
|
||||
from little endian to big endian or vice versa. The byte swapped value is
|
||||
returned.
|
||||
|
||||
@param Ip6 Points to an IPv6 address
|
||||
|
||||
@return The byte swapped IPv6 address.
|
||||
|
||||
**/
|
||||
EFI_IPv6_ADDRESS *
|
||||
Ip6Swap128 (
|
||||
EFI_IPv6_ADDRESS *Ip6
|
||||
)
|
||||
{
|
||||
UINT64 High;
|
||||
UINT64 Low;
|
||||
|
||||
CopyMem (&High, Ip6, sizeof (UINT64));
|
||||
CopyMem (&Low, &Ip6->Addr[8], sizeof (UINT64));
|
||||
|
||||
High = SwapBytes64 (High);
|
||||
Low = SwapBytes64 (Low);
|
||||
|
||||
CopyMem (Ip6, &Low, sizeof (UINT64));
|
||||
CopyMem (&Ip6->Addr[8], &High, sizeof (UINT64));
|
||||
|
||||
return Ip6;
|
||||
}
|
||||
|
||||
/**
|
||||
Initialize a random seed using current time.
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user