bridge doesn't call the filters on outbound.
That only affects locally generated packets. It is debatable whether
that is a bug or a (questionable) design decision. The impact on
existing setups needs to be evaluated; I'm very unsure. But then I'm
not the biggest bridge fan on earth and have never seen anyone using
the bridge filters in a real world scenario until now, afair.

ok?

Index: sys/net/if_bridge.c
===================================================================
RCS file: /cvs/src/sys/net/if_bridge.c,v
retrieving revision 1.298
diff -u -p -r1.298 if_bridge.c
--- sys/net/if_bridge.c 17 Aug 2017 10:14:08 -0000      1.298
+++ sys/net/if_bridge.c 25 Oct 2017 13:32:36 -0000
@@ -734,6 +734,7 @@ bridge_output(struct ifnet *ifp, struct 
        struct ether_addr *dst;
        struct bridge_softc *sc;
        struct bridge_tunneltag *brtag;
+       struct bridge_iflist *ifl;
        int error;
 
        /* ifp must be a member interface of the bridge. */
@@ -819,6 +820,12 @@ bridge_output(struct ifnet *ifp, struct 
                                        continue;
                                }
                        }
+
+                       ifl = (struct bridge_iflist *)dst_if->if_bridgeport;
+                       KASSERT(ifl != NULL);
+                       if (bridge_filterrule(&ifl->bif_brlout, eh, mc) ==
+                           BRL_ACTION_BLOCK)
+                               continue;
 
                        error = bridge_ifenqueue(sc, dst_if, mc);
                        if (error)



-- 
Henning Brauer, h...@bsws.de, henn...@openbsd.org
BS Web Services GmbH, http://bsws.de, Full-Service ISP
Secure Hosting, Mail and DNS. Virtual & Dedicated Servers, Root to Fully Managed
Henning Brauer Consulting, http://henningbrauer.com/

Reply via email to