NetworkPkg: 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>
This commit is contained in:
Fu Siyuan 2016-04-29 15:08:58 +08:00
parent a2cc5fea44
commit 6f2f4116eb
3 changed files with 25 additions and 15 deletions

View File

@ -1,7 +1,7 @@
/** @file
This implementation of EFI_PXE_BASE_CODE_PROTOCOL and EFI_LOAD_FILE_PROTOCOL.
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
@ -1125,7 +1125,9 @@ EfiPxeBcUdpWrite (
&Private->SubnetMask.v4,
&Private->GatewayIp.v4,
&Private->CurSrcPort,
DoNotFragment
DoNotFragment,
Private->Mode.TTL,
Private->Mode.ToS
);
}

View File

@ -1,7 +1,7 @@
/** @file
Support functions implementation for UefiPxeBc Driver.
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
@ -489,6 +489,8 @@ PxeBcIcmp6ErrorUpdate (
@param[in, out] SrcPort The pointer to the source port.
@param[in] DoNotFragment If TRUE, fragment is not enabled.
Otherwise, fragment is enabled.
@param[in] TTL The time to live field of the IP header.
@param[in] ToS The type of service field of the IP header.
@retval EFI_SUCCESS Successfully configured this instance.
@retval Others Failed to configure this instance.
@ -501,7 +503,9 @@ PxeBcConfigUdp4Write (
IN EFI_IPv4_ADDRESS *SubnetMask,
IN EFI_IPv4_ADDRESS *Gateway,
IN OUT UINT16 *SrcPort,
IN BOOLEAN DoNotFragment
IN BOOLEAN DoNotFragment,
IN UINT8 TTL,
IN UINT8 ToS
)
{
EFI_UDP4_CONFIG_DATA Udp4CfgData;
@ -511,8 +515,8 @@ PxeBcConfigUdp4Write (
Udp4CfgData.TransmitTimeout = PXEBC_DEFAULT_LIFETIME;
Udp4CfgData.ReceiveTimeout = PXEBC_DEFAULT_LIFETIME;
Udp4CfgData.TypeOfService = DEFAULT_ToS;
Udp4CfgData.TimeToLive = DEFAULT_TTL;
Udp4CfgData.TypeOfService = ToS;
Udp4CfgData.TimeToLive = TTL;
Udp4CfgData.AllowDuplicatePort = TRUE;
Udp4CfgData.DoNotFragment = DoNotFragment;

View File

@ -1,7 +1,7 @@
/** @file
Support functions declaration for UefiPxeBc Driver.
Copyright (c) 2007 - 2014, 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
@ -128,13 +128,15 @@ PxeBcIcmp6ErrorUpdate (
/**
This function is to configure a UDPv4 instance for UdpWrite.
@param[in] Udp4 Pointer to EFI_UDP4_PROTOCOL.
@param[in] StationIp Pointer to the station address.
@param[in] SubnetMask Pointer to the subnet mask.
@param[in] Gateway Pointer to the gateway address.
@param[in, out] SrcPort Pointer to the source port.
@param[in] DoNotFragment The flag of DoNotFragment bit in the IPv4
packet.
@param[in] Udp4 The pointer to EFI_UDP4_PROTOCOL.
@param[in] StationIp The pointer to the station address.
@param[in] SubnetMask The pointer to the subnet mask.
@param[in] Gateway The pointer to the gateway address.
@param[in, out] SrcPort The pointer to the source port.
@param[in] DoNotFragment If TRUE, fragment is not enabled.
Otherwise, fragment is enabled.
@param[in] TTL The time to live field of the IP header.
@param[in] ToS The type of service field of the IP header.
@retval EFI_SUCCESS Successfully configured this instance.
@retval Others Failed to configure this instance.
@ -147,7 +149,9 @@ PxeBcConfigUdp4Write (
IN EFI_IPv4_ADDRESS *SubnetMask,
IN EFI_IPv4_ADDRESS *Gateway,
IN OUT UINT16 *SrcPort,
IN BOOLEAN DoNotFragment
IN BOOLEAN DoNotFragment,
IN UINT8 TTL,
IN UINT8 ToS
);