diff options
author | mks <mks@FreeBSD.org> | 2000-01-15 20:34:55 +0000 |
---|---|---|
committer | mks <mks@FreeBSD.org> | 2000-01-15 20:34:55 +0000 |
commit | a7042ee1442add5f34d7b9cc4be522b8bcc7e0e5 (patch) | |
tree | 39732a7bb24b1a4401292f0a4ac40ba3744996b0 /sys/netatm | |
parent | 0f13a87fbeeee8bf5b6c573b897465c6f2b3d91c (diff) | |
download | FreeBSD-src-a7042ee1442add5f34d7b9cc4be522b8bcc7e0e5.zip FreeBSD-src-a7042ee1442add5f34d7b9cc4be522b8bcc7e0e5.tar.gz |
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.
Diffstat (limited to 'sys/netatm')
-rw-r--r-- | sys/netatm/spans/spans_arp.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/sys/netatm/spans/spans_arp.c b/sys/netatm/spans/spans_arp.c index 0c445ae..f206b09 100644 --- a/sys/netatm/spans/spans_arp.c +++ b/sys/netatm/spans/spans_arp.c @@ -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) { @@ -642,6 +636,17 @@ spansarp_input(clp, m) } /* + * 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 */ s = splnet(); |