1. Fixed one bug in Undi driver.

2. Add default branch to meet CYGWINGCC build in Tcp4Dispatcher.c.
3. Sync the latest network stack library.
4. Fixed one bug in Mtftp4Support.c, for AsciiStrCpy() return the pointer to head of string, not the tail of string.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3741 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
vanjeff 2007-08-30 06:58:37 +00:00
parent dc59293a36
commit b61439a709
7 changed files with 83 additions and 64 deletions

View File

@ -29,6 +29,7 @@ Abstract:
#include <Library/DebugLib.h> #include <Library/DebugLib.h>
#include <Library/UefiBootServicesTableLib.h> #include <Library/UefiBootServicesTableLib.h>
#include <Library/MemoryAllocationLib.h> #include <Library/MemoryAllocationLib.h>
#include <Library/BaseMemoryLib.h>
#define NET_PROTO_HDR(Buf, Type) ((Type *) ((Buf)->BlockOp[0].Head)) #define NET_PROTO_HDR(Buf, Type) ((Type *) ((Buf)->BlockOp[0].Head))
@ -416,13 +417,13 @@ IpIoCreateSndEntry (
// //
// Set the fields of OverrideData // Set the fields of OverrideData
// //
*OverrideData = * (EFI_IP4_OVERRIDE_DATA *) Override; NetCopyMem (OverrideData, Override, sizeof (*OverrideData));
} }
// //
// Set the fields of TxData // Set the fields of TxData
// //
EFI_IP4 (TxData->DestinationAddress) = Dest; NetCopyMem (&TxData->DestinationAddress, &Dest, sizeof (EFI_IPv4_ADDRESS));
TxData->OverrideData = OverrideData; TxData->OverrideData = OverrideData;
TxData->OptionsLength = 0; TxData->OptionsLength = 0;
TxData->OptionsBuffer = NULL; TxData->OptionsBuffer = NULL;
@ -761,7 +762,6 @@ IpIoOpen (
{ {
EFI_STATUS Status; EFI_STATUS Status;
EFI_IP4_PROTOCOL *Ip; EFI_IP4_PROTOCOL *Ip;
EFI_IPv4_ADDRESS ZeroIp;
if (IpIo->IsConfigured) { if (IpIo->IsConfigured) {
return EFI_ACCESS_DENIED; return EFI_ACCESS_DENIED;
@ -782,8 +782,7 @@ IpIoOpen (
// (0.0.0.0, 0.0.0.0, 0.0.0.0). Delete this statement if Ip modified // (0.0.0.0, 0.0.0.0, 0.0.0.0). Delete this statement if Ip modified
// its code // its code
// //
EFI_IP4 (ZeroIp) = 0; Status = Ip->Routes (Ip, TRUE, &mZeroIp4Addr, &mZeroIp4Addr, &mZeroIp4Addr);
Status = Ip->Routes (Ip, TRUE, &ZeroIp, &ZeroIp, &ZeroIp);
if (EFI_ERROR (Status) && (EFI_NOT_FOUND != Status)) { if (EFI_ERROR (Status) && (EFI_NOT_FOUND != Status)) {
return Status; return Status;
@ -1147,8 +1146,8 @@ IpIoConfigIp (
Ip4ConfigData->SubnetMask = Ip4ModeData.ConfigData.SubnetMask; Ip4ConfigData->SubnetMask = Ip4ModeData.ConfigData.SubnetMask;
} }
IpInfo->Addr = EFI_IP4 (Ip4ConfigData->StationAddress); NetCopyMem (&IpInfo->Addr, &Ip4ConfigData->StationAddress, sizeof (IP4_ADDR));
IpInfo->SubnetMask = EFI_IP4 (Ip4ConfigData->SubnetMask); NetCopyMem (&IpInfo->SubnetMask, &Ip4ConfigData->SubnetMask, sizeof (IP4_ADDR));
Status = Ip->Receive (Ip, &IpInfo->DummyRcvToken); Status = Ip->Receive (Ip, &IpInfo->DummyRcvToken);
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {

View File

@ -46,6 +46,7 @@
DebugLib DebugLib
UefiBootServicesTableLib UefiBootServicesTableLib
MemoryAllocationLib MemoryAllocationLib
BaseMemoryLib
[Protocols] [Protocols]
gEfiIp4ProtocolGuid # PROTOCOL ALWAYS_CONSUMED gEfiIp4ProtocolGuid # PROTOCOL ALWAYS_CONSUMED

View File

@ -30,6 +30,7 @@ Abstract:
#include <Library/DebugLib.h> #include <Library/DebugLib.h>
#include <Library/UefiBootServicesTableLib.h> #include <Library/UefiBootServicesTableLib.h>
#include <Library/MemoryAllocationLib.h> #include <Library/MemoryAllocationLib.h>
#include <library/BaseMemoryLib.h>
STATIC STATIC
VOID VOID
@ -77,6 +78,7 @@ UdpIoWrapTx (
EFI_UDP4_TRANSMIT_DATA *UdpTxData; EFI_UDP4_TRANSMIT_DATA *UdpTxData;
EFI_STATUS Status; EFI_STATUS Status;
UINT32 Count; UINT32 Count;
IP4_ADDR Ip;
Token = NetAllocatePool (sizeof (UDP_TX_TOKEN) + Token = NetAllocatePool (sizeof (UDP_TX_TOKEN) +
sizeof (EFI_UDP4_FRAGMENT_DATA) * (Packet->BlockOpNum - 1)); sizeof (EFI_UDP4_FRAGMENT_DATA) * (Packet->BlockOpNum - 1));
@ -116,15 +118,21 @@ UdpIoWrapTx (
UdpTxData->GatewayAddress = NULL; UdpTxData->GatewayAddress = NULL;
if (EndPoint != NULL) { if (EndPoint != NULL) {
EFI_IP4 (Token->UdpSession.SourceAddress) = HTONL (EndPoint->LocalAddr); Ip = HTONL (EndPoint->LocalAddr);
EFI_IP4 (Token->UdpSession.DestinationAddress) = HTONL (EndPoint->RemoteAddr); NetCopyMem (&Token->UdpSession.SourceAddress, &Ip, sizeof (EFI_IPv4_ADDRESS));
Token->UdpSession.SourcePort = EndPoint->LocalPort;
Token->UdpSession.DestinationPort = EndPoint->RemotePort; Ip = HTONL (EndPoint->RemoteAddr);
UdpTxData->UdpSessionData = &Token->UdpSession; NetCopyMem (&Token->UdpSession.DestinationAddress, &Ip, sizeof (EFI_IPv4_ADDRESS));
Token->UdpSession.SourcePort = EndPoint->LocalPort;
Token->UdpSession.DestinationPort = EndPoint->RemotePort;
UdpTxData->UdpSessionData = &Token->UdpSession;
} }
if (Gateway != 0) { if (Gateway != 0) {
EFI_IP4 (Token->Gateway) = HTONL (Gateway); Ip = HTONL (Gateway);
NetCopyMem (&Token->Gateway, &Ip, sizeof (EFI_IPv4_ADDRESS));
UdpTxData->GatewayAddress = &Token->Gateway; UdpTxData->GatewayAddress = &Token->Gateway;
} }
@ -670,11 +678,14 @@ UdpIoOnDgramRcvd (
} }
UdpSession = &UdpRxData->UdpSession; UdpSession = &UdpRxData->UdpSession;
Points.LocalAddr = EFI_NTOHL (UdpSession->DestinationAddress);
Points.LocalPort = UdpSession->DestinationPort; Points.LocalPort = UdpSession->DestinationPort;
Points.RemoteAddr = EFI_NTOHL (UdpSession->SourceAddress);
Points.RemotePort = UdpSession->SourcePort; Points.RemotePort = UdpSession->SourcePort;
NetCopyMem (&Points.LocalAddr, &UdpSession->DestinationAddress, sizeof (IP4_ADDR));
NetCopyMem (&Points.RemoteAddr, &UdpSession->SourceAddress, sizeof (IP4_ADDR));
Points.LocalAddr = NTOHL (Points.LocalAddr);
Points.RemoteAddr = NTOHL (Points.RemoteAddr);
Token->CallBack (Netbuf, &Points, EFI_SUCCESS, Token->Context); Token->CallBack (Netbuf, &Points, EFI_SUCCESS, Token->Context);
ON_EXIT: ON_EXIT:

View File

@ -46,6 +46,7 @@
DebugLib DebugLib
UefiBootServicesTableLib UefiBootServicesTableLib
MemoryAllocationLib MemoryAllocationLib
BaseMemoryLib
[Protocols] [Protocols]
gEfiUdp4ServiceBindingProtocolGuid # PROTOCOL ALWAYS_CONSUMED gEfiUdp4ServiceBindingProtocolGuid # PROTOCOL ALWAYS_CONSUMED

View File

@ -305,11 +305,16 @@ Mtftp4SendRequest (
Packet->OpCode = HTONS (Instance->Operation); Packet->OpCode = HTONS (Instance->Operation);
Cur = Packet->Rrq.Filename; Cur = Packet->Rrq.Filename;
Cur = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Token->Filename); Cur = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Token->Filename);
Cur += AsciiStrLen ((CHAR8 *) Token->Filename);
Cur = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Mode); Cur = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Mode);
Cur += AsciiStrLen ((CHAR8 *) Mode);
for (Index = 0; Index < Token->OptionCount; ++Index) { for (Index = 0; Index < Token->OptionCount; ++Index) {
Cur = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Options[Index].OptionStr); Cur = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Options[Index].OptionStr);
Cur = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Options[Index].ValueStr); Cur += AsciiStrLen ((CHAR8 *) Options[Index].OptionStr);
Cur = (UINT8 *) AsciiStrCpy ((CHAR8 *) Cur, (CHAR8 *) Options[Index].ValueStr);
Cur += AsciiStrLen ((CHAR8 *) (CHAR8 *) Options[Index].ValueStr);
} }
return Mtftp4SendPacket (Instance, Nbuf); return Mtftp4SendPacket (Instance, Nbuf);

View File

@ -707,6 +707,8 @@ Tcp4Dispatcher (
return Tcp4Route (Tcb, (TCP4_ROUTE_INFO *) Data); return Tcp4Route (Tcb, (TCP4_ROUTE_INFO *) Data);
default:
return EFI_UNSUPPORTED;
} }
return EFI_SUCCESS; return EFI_SUCCESS;