if (NewSubnetMask != NULL && !IP4_IS_VALID_NETMASK (NTOHL (NewSubnetMask->Addr[0]))) {\r
return EFI_INVALID_PARAMETER;\r
}\r
- \r
- if (NewStationIp != NULL && !NetIp4IsUnicast (NTOHL (NewStationIp->Addr[0]), NTOHL (NewSubnetMask->Addr[0]))) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
\r
+ if (NewStationIp != NULL) {\r
+ if (IP4_IS_UNSPECIFIED(NTOHL (NewStationIp->Addr[0])) || \r
+ IP4_IS_LOCAL_BROADCAST(NTOHL (NewStationIp->Addr[0])) ||\r
+ (NewSubnetMask != NULL && !NetIp4IsUnicast (NTOHL (NewStationIp->Addr[0]), NTOHL (NewSubnetMask->Addr[0])))) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+ }\r
+ \r
Private = PXEBC_PRIVATE_DATA_FROM_PXEBC (This);\r
Mode = Private->PxeBc.Mode;\r
\r