/** @file\r
Support functions implementation for UefiPxeBc Driver.\r
\r
- Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
}\r
\r
if (EFI_IP4 (RxData->Header->SourceAddress) != 0 &&\r
- !NetIp4IsUnicast (EFI_NTOHL (RxData->Header->SourceAddress), 0)) {\r
+ (NTOHL (Mode->SubnetMask.Addr[0]) != 0) &&\r
+ IP4_NET_EQUAL (NTOHL(Mode->StationIp.Addr[0]), EFI_NTOHL (RxData->Header->SourceAddress), NTOHL (Mode->SubnetMask.Addr[0])) &&\r
+ !NetIp4IsUnicast (EFI_NTOHL (RxData->Header->SourceAddress), NTOHL (Mode->SubnetMask.Addr[0]))) {\r
//\r
// The source address of the received packet should be a valid unicast address.\r
//\r
\r
if (Type != ICMP_V6_DEST_UNREACHABLE &&\r
Type != ICMP_V6_PACKET_TOO_BIG &&\r
- Type != ICMP_V6_PACKET_TOO_BIG &&\r
+ Type != ICMP_V6_TIME_EXCEEDED &&\r
Type != ICMP_V6_PARAMETER_PROBLEM) {\r
//\r
// The type of the receveid packet should be an ICMP6 error message.\r
@param[in, out] SrcPort The pointer to the source port.\r
@param[in] DoNotFragment If TRUE, fragment is not enabled.\r
Otherwise, fragment is enabled.\r
+ @param[in] Ttl The time to live field of the IP header. \r
+ @param[in] ToS The type of service field of the IP header.\r
\r
@retval EFI_SUCCESS Successfully configured this instance.\r
@retval Others Failed to configure this instance.\r
IN EFI_IPv4_ADDRESS *SubnetMask,\r
IN EFI_IPv4_ADDRESS *Gateway,\r
IN OUT UINT16 *SrcPort,\r
- IN BOOLEAN DoNotFragment\r
+ IN BOOLEAN DoNotFragment,\r
+ IN UINT8 Ttl,\r
+ IN UINT8 ToS\r
)\r
{\r
EFI_UDP4_CONFIG_DATA Udp4CfgData;\r
\r
Udp4CfgData.TransmitTimeout = PXEBC_DEFAULT_LIFETIME;\r
Udp4CfgData.ReceiveTimeout = PXEBC_DEFAULT_LIFETIME;\r
- Udp4CfgData.TypeOfService = DEFAULT_ToS;\r
- Udp4CfgData.TimeToLive = DEFAULT_TTL;\r
+ Udp4CfgData.TypeOfService = ToS;\r
+ Udp4CfgData.TimeToLive = Ttl;\r
Udp4CfgData.AllowDuplicatePort = TRUE;\r
Udp4CfgData.DoNotFragment = DoNotFragment;\r
\r
{\r
UINTN Remainder;\r
\r
- while (Length > 0) {\r
- Length--;\r
+ for (; Length > 0; Length--) {\r
Remainder = Number % 10;\r
Number /= 10;\r
- Buffer[Length] = (UINT8) ('0' + Remainder);\r
+ Buffer[Length - 1] = (UINT8) ('0' + Remainder);\r
}\r
}\r
\r