summaryrefslogtreecommitdiffstats
path: root/sys/netatm/spans
diff options
context:
space:
mode:
authormks <mks@FreeBSD.org>2000-01-15 20:34:55 +0000
committermks <mks@FreeBSD.org>2000-01-15 20:34:55 +0000
commita7042ee1442add5f34d7b9cc4be522b8bcc7e0e5 (patch)
tree39732a7bb24b1a4401292f0a4ac40ba3744996b0 /sys/netatm/spans
parent0f13a87fbeeee8bf5b6c573b897465c6f2b3d91c (diff)
downloadFreeBSD-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/spans')
-rw-r--r--sys/netatm/spans/spans_arp.c19
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();
OpenPOWER on IntegriCloud