Process SPANS ARP requests even if source IP is 0.0.0.0 (or broadcast). This
can occur when talking to a Fore host which is using "bonded" interfaces.
This commit is contained in:
parent
f95270bacb
commit
98e185d2a5
@ -620,17 +620,11 @@ spansarp_input(clp, m)
|
||||
|
||||
/*
|
||||
* Validate source addresses
|
||||
* can't be from broadcast
|
||||
* can't be from hardware broadcast
|
||||
* can't be from me
|
||||
*/
|
||||
if (!spans_addr_cmp(&ahp->ah_sha, &spans_bcastaddr))
|
||||
goto free;
|
||||
#if (defined(BSD) && (BSD >= 199306))
|
||||
if (in_broadcast(in_src, &inp->inf_nif->nif_if))
|
||||
#else
|
||||
if (in_broadcast(in_src))
|
||||
#endif
|
||||
goto free;
|
||||
if (!spans_addr_cmp(&ahp->ah_sha, spp->sp_addr.address))
|
||||
goto free;
|
||||
if (in_src.s_addr == in_me.s_addr) {
|
||||
@ -641,6 +635,17 @@ spansarp_input(clp, m)
|
||||
goto chkop;
|
||||
}
|
||||
|
||||
/*
|
||||
* If source IP address is from unspecified or broadcast addresses,
|
||||
* don't bother updating arp table, but answer possible requests
|
||||
*/
|
||||
#if (defined(BSD) && (BSD >= 199306))
|
||||
if (in_broadcast(in_src, &inp->inf_nif->nif_if))
|
||||
#else
|
||||
if (in_broadcast(in_src))
|
||||
#endif
|
||||
goto chkop;
|
||||
|
||||
/*
|
||||
* Update arp table with source address info
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user