summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Library/DxeUdpIoLib
diff options
context:
space:
mode:
Diffstat (limited to 'MdeModulePkg/Library/DxeUdpIoLib')
-rw-r--r--MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.c27
-rw-r--r--MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf1
2 files changed, 20 insertions, 8 deletions
diff --git a/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.c b/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.c
index b66348c284..d56456afb2 100644
--- a/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.c
+++ b/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.c
@@ -30,6 +30,7 @@ Abstract:
#include <Library/DebugLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/MemoryAllocationLib.h>
+#include <library/BaseMemoryLib.h>
STATIC
VOID
@@ -77,6 +78,7 @@ UdpIoWrapTx (
EFI_UDP4_TRANSMIT_DATA *UdpTxData;
EFI_STATUS Status;
UINT32 Count;
+ IP4_ADDR Ip;
Token = NetAllocatePool (sizeof (UDP_TX_TOKEN) +
sizeof (EFI_UDP4_FRAGMENT_DATA) * (Packet->BlockOpNum - 1));
@@ -116,15 +118,21 @@ UdpIoWrapTx (
UdpTxData->GatewayAddress = NULL;
if (EndPoint != NULL) {
- EFI_IP4 (Token->UdpSession.SourceAddress) = HTONL (EndPoint->LocalAddr);
- EFI_IP4 (Token->UdpSession.DestinationAddress) = HTONL (EndPoint->RemoteAddr);
- Token->UdpSession.SourcePort = EndPoint->LocalPort;
- Token->UdpSession.DestinationPort = EndPoint->RemotePort;
- UdpTxData->UdpSessionData = &Token->UdpSession;
+ Ip = HTONL (EndPoint->LocalAddr);
+ NetCopyMem (&Token->UdpSession.SourceAddress, &Ip, sizeof (EFI_IPv4_ADDRESS));
+
+ Ip = HTONL (EndPoint->RemoteAddr);
+ 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) {
- EFI_IP4 (Token->Gateway) = HTONL (Gateway);
+ Ip = HTONL (Gateway);
+ NetCopyMem (&Token->Gateway, &Ip, sizeof (EFI_IPv4_ADDRESS));
+
UdpTxData->GatewayAddress = &Token->Gateway;
}
@@ -670,11 +678,14 @@ UdpIoOnDgramRcvd (
}
UdpSession = &UdpRxData->UdpSession;
- Points.LocalAddr = EFI_NTOHL (UdpSession->DestinationAddress);
Points.LocalPort = UdpSession->DestinationPort;
- Points.RemoteAddr = EFI_NTOHL (UdpSession->SourceAddress);
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);
ON_EXIT:
diff --git a/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf b/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf
index 32ccb96c32..7a20e80d3c 100644
--- a/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf
+++ b/MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf
@@ -46,6 +46,7 @@
DebugLib
UefiBootServicesTableLib
MemoryAllocationLib
+ BaseMemoryLib
[Protocols]
gEfiUdp4ServiceBindingProtocolGuid # PROTOCOL ALWAYS_CONSUMED