summaryrefslogtreecommitdiff
path: root/sys/net/if_ethersubr.c
diff options
context:
space:
mode:
authorBosko Milekic <bmilekic@FreeBSD.org>2000-09-24 04:08:38 +0000
committerBosko Milekic <bmilekic@FreeBSD.org>2000-09-24 04:08:38 +0000
commitddacb30f2d9a5fd3d4429a6516b7653c250c347a (patch)
tree7da17bb6ec74e1cb25a570c5807218334d8a1bf7 /sys/net/if_ethersubr.c
parent2804330f1a31f3e539854b024c4b4b2b98cd8c43 (diff)
Notes
Diffstat (limited to 'sys/net/if_ethersubr.c')
-rw-r--r--sys/net/if_ethersubr.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c
index e8cfa0d63452..3a3b09ab784f 100644
--- a/sys/net/if_ethersubr.c
+++ b/sys/net/if_ethersubr.c
@@ -446,8 +446,16 @@ ether_input(ifp, eh, m)
m_freem(m);
return;
}
- if (bif != BDG_LOCAL)
+ if (bif != BDG_LOCAL) {
bdg_forward(&m, eh, bif); /* needs forwarding */
+ /*
+ * Do not continue if bdg_forward() processed our
+ * packet (and cleared the mbuf pointer m) or if
+ * it dropped (m_free'd) the packet itself.
+ */
+ if (m == NULL)
+ return;
+ }
if (bif == BDG_LOCAL
|| bif == BDG_BCAST
|| bif == BDG_MCAST)