summaryrefslogtreecommitdiff
path: root/MdeModulePkg
diff options
context:
space:
mode:
authorFu Siyuan <siyuan.fu@intel.com>2016-04-29 15:09:20 +0800
committerFu Siyuan <siyuan.fu@intel.com>2016-05-05 09:08:26 +0800
commit60de3c19a7f875e4f9a012d275e8bb5ce4efb31d (patch)
treefc8b29ee1bf5acd05a5e013a99cb530efa078206 /MdeModulePkg
parent6f2f4116ebe4d3881757d0a08c8a660524775247 (diff)
downloadedk2-60de3c19a7f875e4f9a012d275e8bb5ce4efb31d.zip
edk2-60de3c19a7f875e4f9a012d275e8bb5ce4efb31d.tar.gz
edk2-60de3c19a7f875e4f9a012d275e8bb5ce4efb31d.tar.bz2
MdeModulePkg: Do not use hard coded TTL/ToS in PXE driver.
EFI_PXE_BASE_CODE_PROTOCOL has interface to set the TTL and ToS value, but not used by the UdpWrite() interface. The code always use a hard coded 16 for the TTL and 0 for ToS. This patch update the UpdWrite() to use the TTL and ToS which have been set by the SetParameters(). Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-By: Wu Jiaxin <jiaxin.wu@intel.com> Reviewed-By: Samer El-Haj-Mahmoud <elhaj@hpe.com>
Diffstat (limited to 'MdeModulePkg')
-rw-r--r--MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.c6
-rw-r--r--MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcSupport.c12
-rw-r--r--MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcSupport.h14
3 files changed, 21 insertions, 11 deletions
diff --git a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.c b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.c
index 89977e6..cf7b7b5 100644
--- a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.c
+++ b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.c
@@ -1,7 +1,7 @@
/** @file
Interface routines for PxeBc.
-Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -1435,7 +1435,9 @@ EfiPxeBcUdpWrite (
&Private->StationIp.v4,
&Private->SubnetMask.v4,
&Private->GatewayIp.v4,
- &Private->CurrentUdpSrcPort
+ &Private->CurrentUdpSrcPort,
+ Private->Mode.TTL,
+ Private->Mode.ToS
);
if (EFI_ERROR (Status)) {
Private->CurrentUdpSrcPort = 0;
diff --git a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcSupport.c b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcSupport.c
index 3016da7..79c9a67 100644
--- a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcSupport.c
+++ b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcSupport.c
@@ -1,7 +1,7 @@
/** @file
Support routines for PxeBc.
-Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -42,6 +42,8 @@ PxeBcCommonNotify (
@param SubnetMask Pointer to the subnetmask of the station ip address.
@param Gateway Pointer to the gateway ip address.
@param SrcPort Pointer to the srouce port of the station.
+ @param TTL The time to live field of the IP header.
+ @param ToS The type of service field of the IP header.
@retval EFI_SUCCESS The configuration settings were set, changed, or reset successfully.
@retval EFI_NO_MAPPING When using a default address, configuration (DHCP, BOOTP,
@@ -65,7 +67,9 @@ PxeBcConfigureUdpWriteInstance (
IN EFI_IPv4_ADDRESS *StationIp,
IN EFI_IPv4_ADDRESS *SubnetMask,
IN EFI_IPv4_ADDRESS *Gateway,
- IN OUT UINT16 *SrcPort
+ IN OUT UINT16 *SrcPort,
+ IN UINT8 TTL,
+ IN UINT8 ToS
)
{
EFI_UDP4_CONFIG_DATA Udp4CfgData;
@@ -74,8 +78,8 @@ PxeBcConfigureUdpWriteInstance (
ZeroMem (&Udp4CfgData, sizeof (Udp4CfgData));
Udp4CfgData.ReceiveTimeout = PXEBC_DEFAULT_LIFETIME;
- Udp4CfgData.TypeOfService = DEFAULT_ToS;
- Udp4CfgData.TimeToLive = DEFAULT_TTL;
+ Udp4CfgData.TypeOfService = ToS;
+ Udp4CfgData.TimeToLive = TTL;
Udp4CfgData.AllowDuplicatePort = TRUE;
CopyMem (&Udp4CfgData.StationAddress, StationIp, sizeof (*StationIp));
diff --git a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcSupport.h b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcSupport.h
index 6f41aa6..1082b3a 100644
--- a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcSupport.h
+++ b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcSupport.h
@@ -1,6 +1,6 @@
/** @file
Support routines for PxeBc.
-Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
@@ -32,13 +32,15 @@ PxeBcCommonNotify (
/**
This function initialize(or configure) the Udp4Write instance.
-
+
@param Udp4 Pointer to the EFI_UDP4_PROTOCOL instance.
@param StationIp Pointer to the station ip address.
@param SubnetMask Pointer to the subnetmask of the station ip address.
@param Gateway Pointer to the gateway ip address.
@param SrcPort Pointer to the srouce port of the station.
-
+ @param TTL The time to live field of the IP header.
+ @param ToS The type of service field of the IP header.
+
@retval EFI_SUCCESS The configuration settings were set, changed, or reset successfully.
@retval EFI_NO_MAPPING When using a default address, configuration (DHCP, BOOTP,
RARP, etc.) is not finished yet.
@@ -53,7 +55,7 @@ PxeBcCommonNotify (
@retval EFI_DEVICE_ERROR An unexpected network or system error occurred and this instance
was not opened.
@retval Others Please examine the function Udp4->Routes(Udp4, FALSE, &mZeroIp4Addr, &mZeroIp4Addr, Gateway) returns.
-
+
**/
EFI_STATUS
PxeBcConfigureUdpWriteInstance (
@@ -61,7 +63,9 @@ PxeBcConfigureUdpWriteInstance (
IN EFI_IPv4_ADDRESS *StationIp,
IN EFI_IPv4_ADDRESS *SubnetMask,
IN EFI_IPv4_ADDRESS *Gateway,
- IN OUT UINT16 *SrcPort
+ IN OUT UINT16 *SrcPort,
+ IN UINT8 TTL,
+ IN UINT8 ToS
);
/**
Convert number to ASCII value.