From 60de3c19a7f875e4f9a012d275e8bb5ce4efb31d Mon Sep 17 00:00:00 2001 From: Fu Siyuan Date: Fri, 29 Apr 2016 15:09:20 +0800 Subject: [PATCH] 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 Reviewed-By: Wu Jiaxin Reviewed-By: Samer El-Haj-Mahmoud --- .../Universal/Network/UefiPxeBcDxe/PxeBcImpl.c | 6 ++++-- .../Universal/Network/UefiPxeBcDxe/PxeBcSupport.c | 12 ++++++++---- .../Universal/Network/UefiPxeBcDxe/PxeBcSupport.h | 14 +++++++++----- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.c b/MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.c index 89977e6690..cf7b7b566e 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.
+Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.
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 3016da7324..79c9a67f9e 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.
+Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.
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 6f41aa671d..1082b3aa2e 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.
+Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.
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. -- 2.39.2