\r
for (NewIndex = 0; NewIndex < NewDnsCount; NewIndex++) {\r
CopyMem (&DnsAddress, NewDns + NewIndex, sizeof (IP4_ADDR));\r
-\r
- if (!NetIp4IsUnicast (NTOHL (DnsAddress), 0)) {\r
+ if (IP4_IS_UNSPECIFIED (NTOHL (DnsAddress)) || IP4_IS_LOCAL_BROADCAST (NTOHL (DnsAddress))) {\r
//\r
// The dns server address must be unicast.\r
//\r
return EFI_WRITE_PROTECTED;\r
}\r
\r
+ IpSb = IP4_SERVICE_FROM_IP4_CONFIG2_INSTANCE (Instance);\r
\r
NewGateway = (EFI_IPv4_ADDRESS *) Data;\r
NewGatewayCount = DataSize / sizeof (EFI_IPv4_ADDRESS);\r
for (Index1 = 0; Index1 < NewGatewayCount; Index1++) {\r
CopyMem (&Gateway, NewGateway + Index1, sizeof (IP4_ADDR));\r
- \r
- if (!NetIp4IsUnicast (NTOHL (Gateway), 0)) {\r
\r
+ if ((IpSb->DefaultInterface->SubnetMask != 0) && \r
+ !NetIp4IsUnicast (NTOHL (Gateway), IpSb->DefaultInterface->SubnetMask)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
}\r
}\r
\r
- IpSb = IP4_SERVICE_FROM_IP4_CONFIG2_INSTANCE (Instance);\r
DataItem = &Instance->DataItem[Ip4Config2DataTypeGateway];\r
OldGateway = DataItem->Data.Gateway;\r
OldGatewayCount = DataItem->DataSize / sizeof (EFI_IPv4_ADDRESS);\r