- if ((NewFilter->Filters & EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP) != 0 &&\r
- (NetIp4IsUnicast (EFI_IP4 (NewFilter->IpList[Index].v4), 0) ||\r
- NetIp6IsValidUnicast (&NewFilter->IpList[Index].v6))) {\r
- //\r
- // If EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP is set and IPv4/IPv6 address\r
- // is in IpList, promiscuous mode is needed.\r
- //\r
+ if (Mode->UsingIpv6) {\r
+ if ((NewFilter->Filters & EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP) != 0 &&\r
+ NetIp6IsValidUnicast (&NewFilter->IpList[Index].v6)) {\r
+ NeedPromiscuous = TRUE;\r
+ }\r
+ } else if ((EFI_NTOHL(Mode->StationIp) != 0) &&\r
+ (EFI_NTOHL(Mode->SubnetMask) != 0) &&\r
+ IP4_NET_EQUAL(EFI_NTOHL(Mode->StationIp), EFI_NTOHL(NewFilter->IpList[Index].v4), EFI_NTOHL(Mode->SubnetMask.v4)) &&\r
+ NetIp4IsUnicast (EFI_IP4 (NewFilter->IpList[Index].v4), EFI_NTOHL(Mode->SubnetMask)) &&\r
+ ((NewFilter->Filters & EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP) != 0)) {\r