* bridge_transmit: * * Do output on a bridge. * */
| 2153 | * |
| 2154 | */ |
| 2155 | static int |
| 2156 | bridge_transmit(struct ifnet *ifp, struct mbuf *m) |
| 2157 | { |
| 2158 | struct bridge_softc *sc; |
| 2159 | struct ether_header *eh; |
| 2160 | struct ifnet *dst_if; |
| 2161 | int error = 0; |
| 2162 | |
| 2163 | sc = ifp->if_softc; |
| 2164 | |
| 2165 | ETHER_BPF_MTAP(ifp, m); |
| 2166 | |
| 2167 | eh = mtod(m, struct ether_header *); |
| 2168 | |
| 2169 | if (((m->m_flags & (M_BCAST|M_MCAST)) == 0) && |
| 2170 | (dst_if = bridge_rtlookup(sc, eh->ether_dhost, 1)) != NULL) { |
| 2171 | error = bridge_enqueue(sc, dst_if, m); |
| 2172 | } else |
| 2173 | bridge_broadcast(sc, ifp, m, 0); |
| 2174 | |
| 2175 | return (error); |
| 2176 | } |
| 2177 | |
| 2178 | /* |
| 2179 | * The ifp->if_qflush entry point for if_bridge(4) is no-op. |
nothing calls this directly
no test coverage detected