- Fix a bug resulting in ROS discarding all gratuitous ARP packets

- Remove an unnecessary check

svn path=/trunk/; revision=42453
This commit is contained in:
Cameron Gutman 2009-08-07 02:39:38 +00:00
parent 3bcb06c85c
commit 353d0a8d27

View file

@ -179,7 +179,6 @@ VOID ARPReceive(
IP_ADDRESS Address;
PVOID SenderHWAddress;
PVOID SenderProtoAddress;
PVOID TargetProtoAddress;
PNEIGHBOR_CACHE_ENTRY NCE;
PNDIS_PACKET NdisPacket;
PIP_INTERFACE Interface = (PIP_INTERFACE)Context;
@ -203,17 +202,6 @@ VOID ARPReceive(
SenderHWAddress = (PVOID)((ULONG_PTR)Header + sizeof(ARP_HEADER));
SenderProtoAddress = (PVOID)((ULONG_PTR)SenderHWAddress + Header->HWAddrLen);
/* Check if we have the target protocol address */
TargetProtoAddress = (PVOID)((ULONG_PTR)SenderProtoAddress +
Header->ProtoAddrLen + Header->HWAddrLen);
if( !AddrLocateADEv4( *((PIPv4_RAW_ADDRESS)TargetProtoAddress),
&Address) ) {
TI_DbgPrint(DEBUG_ARP, ("Target address (0x%X) is not mine.\n", *((PULONG)TargetProtoAddress)));
return;
}
/* Check if we know the sender */
AddrInitIPv4(&Address, *((PULONG)SenderProtoAddress));
@ -230,7 +218,7 @@ VOID ARPReceive(
Header->HWAddrLen, NUD_REACHABLE);
}
if (Header->Opcode != ARP_OPCODE_REQUEST || !NCE)
if (Header->Opcode != ARP_OPCODE_REQUEST)
return;
/* This is a request for our address. Swap the addresses and