Lines Matching refs:bif
407 bif_ifflags_are_set(struct bridge_iflist * bif, uint32_t flags) in bif_ifflags_are_set() argument
409 return (bif->bif_ifflags & flags) != 0; in bif_ifflags_are_set()
413 bif_has_checksum_offload(struct bridge_iflist * bif) in bif_has_checksum_offload() argument
415 return bif_ifflags_are_set(bif, IFBIF_CHECKSUM_OFFLOAD); in bif_has_checksum_offload()
419 bif_has_mac_nat(struct bridge_iflist * bif) in bif_has_mac_nat() argument
421 return bif_ifflags_are_set(bif, IFBIF_MAC_NAT); in bif_has_mac_nat()
425 bif_uses_virtio(struct bridge_iflist * bif) in bif_uses_virtio() argument
427 return bif_ifflags_are_set(bif, IFBIF_USES_VIRTIO); in bif_uses_virtio()
669 static mbuf_t bridge_filter_checksum(ifnet_t, struct bridge_iflist * bif,
809 struct bridge_iflist * bif; in bridge_rtlookup() local
812 bif = bridge_rtlookup_bif(sc, addr, vlan); in bridge_rtlookup()
813 if (bif != NULL) { in bridge_rtlookup()
814 ifp = bif->bif_ifp; in bridge_rtlookup()
1816 struct bridge_iflist *bif; in bridge_clone_destroy() local
1840 while ((bif = TAILQ_FIRST(&sc->sc_iflist)) != NULL) { in bridge_clone_destroy()
1841 bridge_delete_member(sc, bif); in bridge_clone_destroy()
1844 while ((bif = TAILQ_FIRST(&sc->sc_spanlist)) != NULL) { in bridge_clone_destroy()
1845 bridge_delete_span(sc, bif); in bridge_clone_destroy()
1918 bif_set_input_broadcast(struct bridge_iflist * bif, boolean_t input_broadcast) in bif_set_input_broadcast() argument
1922 old_input_broadcast = (bif->bif_flags & BIFF_INPUT_BROADCAST) != 0; in bif_set_input_broadcast()
1924 bif->bif_flags |= BIFF_INPUT_BROADCAST; in bif_set_input_broadcast()
1926 bif->bif_flags &= ~BIFF_INPUT_BROADCAST; in bif_set_input_broadcast()
1941 struct bridge_iflist *bif; in bridge_ioctl() local
2074 TAILQ_FOREACH(bif, &sc->sc_iflist, bif_next) { in bridge_ioctl()
2075 if (bif->bif_ifp->if_mtu != (unsigned)ifr->ifr_mtu) { in bridge_ioctl()
2079 bif->bif_ifp->if_mtu, in bridge_ioctl()
2080 bif->bif_ifp->if_xname, ifr->ifr_mtu); in bridge_ioctl()
2119 struct bridge_iflist *bif; in bridge_mutecaps() local
2125 TAILQ_FOREACH(bif, &sc->sc_iflist, bif_next) { in bridge_mutecaps()
2127 mask &= bif->bif_savedcaps; in bridge_mutecaps()
2130 TAILQ_FOREACH(bif, &sc->sc_iflist, bif_next) { in bridge_mutecaps()
2131 enabled = bif->bif_ifp->if_capenable; in bridge_mutecaps()
2137 bridge_set_ifcap(sc, bif, enabled); in bridge_mutecaps()
2142 bridge_set_ifcap(struct bridge_softc *sc, struct bridge_iflist *bif, int set) in bridge_set_ifcap() argument
2144 struct ifnet *ifp = bif->bif_ifp; in bridge_set_ifcap()
2236 struct bridge_iflist *bif; in bridge_set_tso() local
2248 TAILQ_FOREACH(bif, &sc->sc_iflist, bif_next) { in bridge_set_tso()
2249 ifnet_t ifp = bif->bif_ifp; in bridge_set_tso()
2339 struct bridge_iflist *bif; in bridge_lookup_member() local
2345 TAILQ_FOREACH(bif, &sc->sc_iflist, bif_next) { in bridge_lookup_member()
2346 ifp = bif->bif_ifp; in bridge_lookup_member()
2348 return bif; in bridge_lookup_member()
2363 struct bridge_iflist *bif; in bridge_lookup_member_if() local
2367 TAILQ_FOREACH(bif, &sc->sc_iflist, bif_next) { in bridge_lookup_member_if()
2368 if (bif->bif_ifp == member_ifp) { in bridge_lookup_member_if()
2369 return bif; in bridge_lookup_member_if()
2398 struct bridge_iflist *bif = (struct bridge_iflist *)cookie; in bridge_iff_input() local
2399 struct bridge_softc *sc = bif->bif_sc; in bridge_iff_input()
2485 struct bridge_iflist *bif = (struct bridge_iflist *)cookie; in bridge_iff_output() local
2486 struct bridge_softc *sc = bif->bif_sc; in bridge_iff_output()
2515 struct bridge_iflist *bif = (struct bridge_iflist *)cookie; in bridge_iff_event() local
2516 struct bridge_softc *sc = bif->bif_sc; in bridge_iff_event()
2539 if ((bif->bif_flags & BIFF_PROMISC) == 0) { in bridge_iff_event()
2549 bif->bif_flags |= BIFF_PROMISC; in bridge_iff_event()
2552 if ((bif->bif_flags & BIFF_WIFI_INFRA) != 0 && in bridge_iff_event()
2553 (bif->bif_flags & BIFF_ALL_MULTI) == 0) { in bridge_iff_event()
2563 bif->bif_flags |= BIFF_ALL_MULTI; in bridge_iff_event()
2598 struct bridge_iflist *bif; in bridge_iff_detached() local
2606 bif = bridge_lookup_member_if(sc, ifp); in bridge_iff_detached()
2607 if (bif != NULL) { in bridge_iff_detached()
2608 bridge_delete_member(sc, bif); in bridge_iff_detached()
2617 TAILQ_FOREACH(bif, &sc->sc_spanlist, bif_next) in bridge_iff_detached()
2618 if (ifp == bif->bif_ifp) { in bridge_iff_detached()
2619 bridge_delete_span(sc, bif); in bridge_iff_detached()
2679 bridge_delete_member(struct bridge_softc *sc, struct bridge_iflist *bif) in bridge_delete_member() argument
2685 struct ifnet *ifs = bif->bif_ifp, *bifp = sc->sc_ifp; in bridge_delete_member()
2697 if ((bif->bif_flags & BIFF_IN_MEMBER_LIST) != 0) { in bridge_delete_member()
2698 bif->bif_flags &= ~BIFF_IN_MEMBER_LIST; in bridge_delete_member()
2700 TAILQ_REMOVE(&sc->sc_iflist, bif, bif_next); in bridge_delete_member()
2704 if (bif == sc->sc_mac_nat_bif) { in bridge_delete_member()
2707 bridge_mac_nat_flush_entries(sc, bif); in bridge_delete_member()
2711 if ((bif->bif_ifflags & IFBIF_STP) != 0) { in bridge_delete_member()
2712 bstp_disable(&bif->bif_stp); in bridge_delete_member()
2747 KASSERT(bif->bif_addrcnt == 0, in bridge_delete_member()
2748 ("%s: %d bridge routes referenced", __func__, bif->bif_addrcnt)); in bridge_delete_member()
2754 bif_flags = bif->bif_flags; in bridge_delete_member()
2776 bridge_set_ifcap(sc, bif, bif->bif_savedcaps); in bridge_delete_member()
2784 iflt_detach(bif->bif_iff_ref); in bridge_delete_member()
2803 bstp_destroy(&bif->bif_stp); /* prepare to free */ in bridge_delete_member()
2806 kfree_type(struct bridge_iflist, bif); in bridge_delete_member()
2826 bridge_delete_span(struct bridge_softc *sc, struct bridge_iflist *bif) in bridge_delete_span() argument
2830 KASSERT(bif->bif_ifp->if_bridge == NULL, in bridge_delete_span()
2833 ifnet_release(bif->bif_ifp); in bridge_delete_span()
2835 TAILQ_REMOVE(&sc->sc_spanlist, bif, bif_next); in bridge_delete_span()
2836 kfree_type(struct bridge_iflist, bif); in bridge_delete_span()
2843 struct bridge_iflist *bif = NULL; in bridge_ioctl_add() local
2866 TAILQ_FOREACH(bif, &sc->sc_spanlist, bif_next) { in bridge_ioctl_add()
2867 if (ifs == bif->bif_ifp) { in bridge_ioctl_add()
2915 bif = kalloc_type(struct bridge_iflist, Z_WAITOK | Z_ZERO | Z_NOFAIL); in bridge_ioctl_add()
2916 bif->bif_ifp = ifs; in bridge_ioctl_add()
2918 bif->bif_ifflags |= IFBIF_LEARNING | IFBIF_DISCOVER; in bridge_ioctl_add()
2920 bif->bif_savedcaps = ifs->if_capenable; in bridge_ioctl_add()
2922 bif->bif_sc = sc; in bridge_ioctl_add()
2924 (void)bridge_mac_nat_enable(sc, bif); in bridge_ioctl_add()
2947 bstp_create(&sc->sc_stp, &bif->bif_stp, bif->bif_ifp); in bridge_ioctl_add()
2964 bif->bif_flags |= BIFF_PROMISC; in bridge_ioctl_add()
2985 bif->bif_flags |= BIFF_WIFI_INFRA; in bridge_ioctl_add()
2988 bif->bif_flags |= BIFF_ALL_MULTI; in bridge_ioctl_add()
3002 bif->bif_flags |= BIFF_FLOWSWITCH_ATTACHED; in bridge_ioctl_add()
3008 bif->bif_flags |= BIFF_NETAGENT_REMOVED; in bridge_ioctl_add()
3016 iff.iff_cookie = bif; in bridge_ioctl_add()
3022 error = dlil_attach_filter(ifs, &iff, &bif->bif_iff_ref, in bridge_ioctl_add()
3029 bif->bif_flags |= BIFF_FILTER_ATTACHED; in bridge_ioctl_add()
3042 bif->bif_flags |= BIFF_PROTO_ATTACHED; in bridge_ioctl_add()
3053 bif->bif_flags |= BIFF_LRO_DISABLED; in bridge_ioctl_add()
3060 bif->bif_flags |= BIFF_IN_MEMBER_LIST; in bridge_ioctl_add()
3062 TAILQ_INSERT_TAIL(&sc->sc_iflist, bif, bif_next); in bridge_ioctl_add()
3067 bif->bif_flags |= BIFF_MEDIA_ACTIVE; in bridge_ioctl_add()
3069 bif->bif_flags &= ~BIFF_MEDIA_ACTIVE; in bridge_ioctl_add()
3077 bif_set_input_broadcast(bif, input_broadcast); in bridge_ioctl_add()
3095 if (bif != NULL) { in bridge_ioctl_add()
3096 bridge_delete_member(sc, bif); in bridge_ioctl_add()
3109 struct bridge_iflist *bif; in bridge_ioctl_del() local
3111 bif = bridge_lookup_member(sc, req->ifbr_ifsname); in bridge_ioctl_del()
3112 if (bif == NULL) { in bridge_ioctl_del()
3116 bridge_delete_member(sc, bif); in bridge_ioctl_del()
3132 struct bridge_iflist *bif; in bridge_ioctl_gifflags() local
3134 bif = bridge_lookup_member(sc, req->ifbr_ifsname); in bridge_ioctl_gifflags()
3135 if (bif == NULL) { in bridge_ioctl_gifflags()
3141 bp = &bif->bif_stp; in bridge_ioctl_gifflags()
3148 req->ifbr_ifsflags = bif->bif_ifflags; in bridge_ioctl_gifflags()
3170 req->ifbr_portno = bif->bif_ifp->if_index & 0xfff; in bridge_ioctl_gifflags()
3171 req->ifbr_addrcnt = bif->bif_addrcnt; in bridge_ioctl_gifflags()
3172 req->ifbr_addrmax = bif->bif_addrmax; in bridge_ioctl_gifflags()
3173 req->ifbr_addrexceeded = bif->bif_addrexceeded; in bridge_ioctl_gifflags()
3182 struct bridge_iflist *bif; in bridge_ioctl_sifflags() local
3189 bif = bridge_lookup_member(sc, req->ifbr_ifsname); in bridge_ioctl_sifflags()
3190 if (bif == NULL) { in bridge_ioctl_sifflags()
3206 (bif->bif_flags & BIFF_HOST_FILTER) != 0)) { in bridge_ioctl_sifflags()
3211 error = bridge_mac_nat_enable(sc, bif); in bridge_ioctl_sifflags()
3215 } else if (sc->sc_mac_nat_bif == bif) { in bridge_ioctl_sifflags()
3221 if ((bif->bif_ifflags & IFBIF_STP) == 0) { in bridge_ioctl_sifflags()
3222 error = bstp_enable(&bif->bif_stp); in bridge_ioctl_sifflags()
3228 if ((bif->bif_ifflags & IFBIF_STP) != 0) { in bridge_ioctl_sifflags()
3229 bstp_disable(&bif->bif_stp); in bridge_ioctl_sifflags()
3234 bp = &bif->bif_stp; in bridge_ioctl_sifflags()
3246 bif->bif_ifflags = ifsflags & IFBIFMASK; in bridge_ioctl_sifflags()
3272 struct bridge_iflist *bif; \
3278 TAILQ_FOREACH(bif, &sc->sc_iflist, bif_next) \
3280 TAILQ_FOREACH(bif, &sc->sc_spanlist, bif_next) \
3296 TAILQ_FOREACH(bif, &sc->sc_iflist, bif_next) { \
3301 "%s", bif->bif_ifp->if_xname); \
3311 TAILQ_FOREACH(bif, &sc->sc_spanlist, bif_next) { \
3317 "%s", bif->bif_ifp->if_xname); \
3318 breq.ifbr_ifsflags = bif->bif_ifflags; \
3320 = bif->bif_ifp->if_index & 0xfff; \
3441 struct bridge_iflist *bif; in bridge_ioctl_saddr32() local
3444 bif = bridge_lookup_member(sc, req->ifba_ifsname); in bridge_ioctl_saddr32()
3445 if (bif == NULL) { in bridge_ioctl_saddr32()
3449 error = bridge_rtupdate(sc, req->ifba_dst, req->ifba_vlan, bif, 1, in bridge_ioctl_saddr32()
3459 struct bridge_iflist *bif; in bridge_ioctl_saddr64() local
3462 bif = bridge_lookup_member(sc, req->ifba_ifsname); in bridge_ioctl_saddr64()
3463 if (bif == NULL) { in bridge_ioctl_saddr64()
3467 error = bridge_rtupdate(sc, req->ifba_dst, req->ifba_vlan, bif, 1, in bridge_ioctl_saddr64()
3617 struct bridge_iflist *bif; in bridge_ioctl_sifprio() local
3619 bif = bridge_lookup_member(sc, req->ifbr_ifsname); in bridge_ioctl_sifprio()
3620 if (bif == NULL) { in bridge_ioctl_sifprio()
3624 return bstp_set_port_priority(&bif->bif_stp, req->ifbr_priority); in bridge_ioctl_sifprio()
3636 struct bridge_iflist *bif; in bridge_ioctl_sifcost() local
3638 bif = bridge_lookup_member(sc, req->ifbr_ifsname); in bridge_ioctl_sifcost()
3639 if (bif == NULL) { in bridge_ioctl_sifcost()
3643 return bstp_set_path_cost(&bif->bif_stp, req->ifbr_path_cost); in bridge_ioctl_sifcost()
3682 struct bridge_iflist *bif; in bridge_ioctl_sifmaxaddr() local
3684 bif = bridge_lookup_member(sc, req->ifbr_ifsname); in bridge_ioctl_sifmaxaddr()
3685 if (bif == NULL) { in bridge_ioctl_sifmaxaddr()
3689 bif->bif_addrmax = req->ifbr_addrmax; in bridge_ioctl_sifmaxaddr()
3697 struct bridge_iflist *bif = NULL; in bridge_ioctl_addspan() local
3709 TAILQ_FOREACH(bif, &sc->sc_spanlist, bif_next) in bridge_ioctl_addspan()
3710 if (ifs == bif->bif_ifp) { in bridge_ioctl_addspan()
3727 bif = kalloc_type(struct bridge_iflist, Z_WAITOK | Z_ZERO | Z_NOFAIL); in bridge_ioctl_addspan()
3729 bif->bif_ifp = ifs; in bridge_ioctl_addspan()
3730 bif->bif_ifflags = IFBIF_SPAN; in bridge_ioctl_addspan()
3732 ifnet_reference(bif->bif_ifp); in bridge_ioctl_addspan()
3734 TAILQ_INSERT_HEAD(&sc->sc_spanlist, bif, bif_next); in bridge_ioctl_addspan()
3743 struct bridge_iflist *bif; in bridge_ioctl_delspan() local
3751 TAILQ_FOREACH(bif, &sc->sc_spanlist, bif_next) in bridge_ioctl_delspan()
3752 if (ifs == bif->bif_ifp) { in bridge_ioctl_delspan()
3756 if (bif == NULL) { in bridge_ioctl_delspan()
3760 bridge_delete_span(sc, bif); in bridge_ioctl_delspan()
3818 struct bridge_iflist *bif; \
3825 TAILQ_FOREACH(bif, &sc->sc_iflist, bif_next) { \
3826 if ((bif->bif_ifflags & IFBIF_STP) != 0) \
3844 TAILQ_FOREACH(bif, &sc->sc_iflist, bif_next) { \
3848 if ((bif->bif_ifflags & IFBIF_STP) == 0) \
3851 bp = &bif->bif_stp; \
3852 bpreq.ifbp_portno = bif->bif_ifp->if_index & 0xfff; \
3926 struct bridge_iflist *bif; in bridge_ioctl_ghostfilter() local
3928 bif = bridge_lookup_member(sc, req->ifbrhf_ifsname); in bridge_ioctl_ghostfilter()
3929 if (bif == NULL) { in bridge_ioctl_ghostfilter()
3934 if (bif->bif_flags & BIFF_HOST_FILTER) { in bridge_ioctl_ghostfilter()
3936 bcopy(bif->bif_hf_hwsrc, req->ifbrhf_hwsrca, in bridge_ioctl_ghostfilter()
3938 req->ifbrhf_ipsrc = bif->bif_hf_ipsrc.s_addr; in bridge_ioctl_ghostfilter()
3947 struct bridge_iflist *bif; in bridge_ioctl_shostfilter() local
3949 bif = bridge_lookup_member(sc, req->ifbrhf_ifsname); in bridge_ioctl_shostfilter()
3950 if (bif == NULL) { in bridge_ioctl_shostfilter()
3953 if (bif_has_mac_nat(bif)) { in bridge_ioctl_shostfilter()
3958 bif->bif_flags |= BIFF_HOST_FILTER; in bridge_ioctl_shostfilter()
3961 bcopy(req->ifbrhf_hwsrca, bif->bif_hf_hwsrc, in bridge_ioctl_shostfilter()
3965 bif->bif_flags |= BIFF_HF_HWSRC; in bridge_ioctl_shostfilter()
3967 bif->bif_flags &= ~BIFF_HF_HWSRC; in bridge_ioctl_shostfilter()
3971 bif->bif_hf_ipsrc.s_addr = req->ifbrhf_ipsrc; in bridge_ioctl_shostfilter()
3972 if (bif->bif_hf_ipsrc.s_addr != INADDR_ANY) { in bridge_ioctl_shostfilter()
3973 bif->bif_flags |= BIFF_HF_IPSRC; in bridge_ioctl_shostfilter()
3975 bif->bif_flags &= ~BIFF_HF_IPSRC; in bridge_ioctl_shostfilter()
3979 bif->bif_flags &= ~(BIFF_HOST_FILTER | BIFF_HF_HWSRC | in bridge_ioctl_shostfilter()
3981 bzero(bif->bif_hf_hwsrc, ETHER_ADDR_LEN); in bridge_ioctl_shostfilter()
3982 bif->bif_hf_ipsrc.s_addr = INADDR_ANY; in bridge_ioctl_shostfilter()
4115 struct bridge_iflist *bif; in bridge_ioctl_gifstats() local
4119 bif = bridge_lookup_member(sc, mreq->brmr_ifname); in bridge_ioctl_gifstats()
4120 if (bif == NULL) { in bridge_ioctl_gifstats()
4135 error = copyout(&bif->bif_stats, user_addr, buflen); in bridge_ioctl_gifstats()
4165 struct bridge_iflist *bif; in bridge_proto_attach_changed() local
4175 bif = bridge_lookup_member_if(sc, ifp); in bridge_proto_attach_changed()
4176 if (bif != NULL) { in bridge_proto_attach_changed()
4177 changed = bif_set_input_broadcast(bif, input_broadcast); in bridge_proto_attach_changed()
4219 struct bridge_iflist *bif; in bridge_updatelinkstatus() local
4228 TAILQ_FOREACH(bif, &sc->sc_iflist, bif_next) { in bridge_updatelinkstatus()
4229 if (bif->bif_flags & BIFF_MEDIA_ACTIVE) { in bridge_updatelinkstatus()
4253 struct bridge_iflist *bif; in bridge_iflinkevent() local
4266 bif = bridge_lookup_member_if(sc, ifp); in bridge_iflinkevent()
4267 if (bif != NULL) { in bridge_iflinkevent()
4269 bif->bif_flags |= BIFF_MEDIA_ACTIVE; in bridge_iflinkevent()
4271 bif->bif_flags &= ~BIFF_MEDIA_ACTIVE; in bridge_iflinkevent()
4274 bridge_mac_nat_flush_entries(sc, bif); in bridge_iflinkevent()
5484 struct bridge_iflist * bif = NULL;
5549 bif = bridge_rtlookup_bif(sc, eh->ether_dhost, vlan);
5550 if (bif != NULL) {
5551 dst_if = bif->bif_ifp;
5572 TAILQ_FOREACH(bif, &sc->sc_iflist, bif_next) {
5573 dst_if = bif->bif_ifp;
5579 if ((bif->bif_flags & BIFF_MEDIA_ACTIVE) == 0) {
5592 if ((bif->bif_ifflags & IFBIF_STP) &&
5593 bif->bif_stp.bp_state == BSTP_IFSTATE_DISCARDING) {
5669 struct bridge_iflist *bif;
5681 bif = bridge_rtlookup_bif(sc, eh->ether_dhost, 0);
5682 if (bif != NULL) {
5683 dst_if = bif->bif_ifp;
6615 struct bridge_iflist *bif;
6623 TAILQ_FOREACH(bif, &sc->sc_spanlist, bif_next) {
6624 dst_if = bif->bif_ifp;
6648 struct bridge_iflist *bif, int setflags, uint8_t flags)
6677 if (bif->bif_addrmax && bif->bif_addrcnt >= bif->bif_addrmax) {
6678 bif->bif_addrexceeded++;
6695 if (bif->bif_ifflags & IFBIF_STICKY) {
6708 brt->brt_dst = bif;
6709 bif->bif_addrcnt++;
6719 brt->brt_dst != bif) {
6721 brt->brt_dst = bif;
7364 bridge_host_filter_arp(struct bridge_iflist *bif, mbuf_t *data)
7421 if ((bif->bif_flags & BIFF_HF_HWSRC) != 0) {
7425 if (bcmp(ea->arp_sha, bif->bif_hf_hwsrc,
7431 if ((bif->bif_flags & BIFF_HF_IPSRC) != 0) {
7436 if (bcmp(ea->arp_spa, &bif->bif_hf_ipsrc.s_addr,
7455 bridge_mac_nat_enable(struct bridge_softc *sc, struct bridge_iflist *bif)
7461 if (IFNET_IS_VMNET(bif->bif_ifp)) {
7466 if (sc->sc_mac_nat_bif != bif) {
7471 sc->sc_mac_nat_bif = bif;
7472 bif->bif_ifflags |= IFBIF_MAC_NAT;
7575 struct bridge_iflist *bif, const char eaddr[ETHER_ADDR_LEN])
7594 mne->mne_bif = bif;
7606 struct bridge_iflist *bif, const struct in_addr *ip, const char eaddr[ETHER_ADDR_LEN])
7610 mne = bridge_create_mac_nat_entry_common(sc, bif, eaddr);
7623 struct bridge_iflist *bif, const struct in6_addr *ip6, const char eaddr[ETHER_ADDR_LEN])
7627 mne = bridge_create_mac_nat_entry_common(sc, bif, eaddr);
7640 bridge_update_mac_nat_entry_common(struct bridge_softc *sc, struct bridge_iflist *bif,
7648 if (mne->mne_bif != bif) {
7651 bif->bif_ifp->if_xname);
7654 } else if (mne->mne_bif != bif) {
7657 mne->mne_bif = bif;
7673 struct bridge_iflist *bif, struct in_addr *ip, const char eaddr[ETHER_ADDR_LEN])
7679 return bridge_update_mac_nat_entry_common(sc, bif, mne, eaddr);
7682 mne = bridge_create_mac_nat_entry_ipv4(sc, bif, ip, eaddr);
7688 struct bridge_iflist *bif, struct in6_addr *ip6, const char eaddr[ETHER_ADDR_LEN])
7694 return bridge_update_mac_nat_entry_common(sc, bif, mne, eaddr);
7697 mne = bridge_create_mac_nat_entry_ipv6(sc, bif, ip6, eaddr);
7703 struct mac_nat_entry_list *list, struct bridge_iflist *bif)
7709 if (bif != NULL && mne->mne_bif != bif) {
7724 bridge_mac_nat_flush_entries(struct bridge_softc *sc, struct bridge_iflist * bif)
7728 flush_bif = (bif == sc->sc_mac_nat_bif) ? NULL : bif;
7963 struct bridge_iflist *bif, mbuf_t *data, struct mac_nat_record *mnr)
7990 mne = bridge_update_mac_nat_entry_ipv4(sc, bif, &ip,
8056 struct bridge_iflist *bif, mbuf_t m,
8104 bif->bif_ifp->if_xname,
8112 struct bridge_iflist *bif, mbuf_t *data, struct mac_nat_record *mnr)
8138 mne = bridge_update_mac_nat_entry_ipv4(sc, bif, &ip,
8144 bridge_mac_nat_udp_output(sc, bif, *data,
8189 struct bridge_iflist *bif,
8413 sc->sc_if_xname, bif->bif_ifp->if_xname, str,
8448 struct bridge_iflist *bif, mbuf_t *data, struct mac_nat_record *mnr)
8457 translate = (bif == sc->sc_mac_nat_bif) ? FALSE : TRUE;
8468 bridge_mac_nat_icmpv6_output(sc, bif, data, ip6h, &saddr, mnr);
8473 (void)bridge_update_mac_nat_entry_ipv6(sc, bif, &saddr,
8752 struct bridge_iflist *bif, mbuf_t *data, struct mac_nat_record *mnr)
8767 translate = bridge_mac_nat_arp_output(sc, bif, data, mnr);
8770 translate = bridge_mac_nat_ip_output(sc, bif, data, mnr);
8773 translate = bridge_mac_nat_ipv6_output(sc, bif, data, mnr);
9333 bridge_filter_arp_list(struct bridge_iflist * bif, mbuf_t m)
9346 error = bridge_host_filter_arp(bif, &scan);
9366 bridge_filter_checksum(ifnet_t bridge_ifp, struct bridge_iflist * bif, mbuf_t m,
9383 &bif->bif_stats.brms_in_ip);
9388 bif->bif_ifp->if_xname, error);
9420 error = bridge_offload_checksum(&m, &info, &bif->bif_stats);
9425 bif->bif_ifp->if_xname, error);
9448 bridge_filter_checksum_list(ifnet_t bridge_ifp, struct bridge_iflist * bif,
9460 scan = bridge_filter_checksum(bridge_ifp, bif,
9471 bridge_checksum_offload_list(ifnet_t bridge_ifp, struct bridge_iflist * bif,
9488 scan = bridge_filter_checksum(bridge_ifp, bif, scan,
9565 struct bridge_iflist * bif;
9567 TAILQ_FOREACH(bif, &sc->sc_iflist, bif_next) {
9568 if (bif == sbif) {
9572 if (_ether_cmp(IF_LLADDR(bif->bif_ifp), lladdr) == 0) {
9573 return bif->bif_ifp;
9598 struct bridge_iflist * bif;
9647 bif = bridge_lookup_member_if(sc, ifp);
9648 if (bif == NULL) {
9656 uses_virtio = bif_uses_virtio(bif);
9663 host_filter = (bif->bif_flags & BIFF_HOST_FILTER) != 0;
9670 } else if ((bif->bif_flags & BIFF_HF_HWSRC) != 0 &&
9671 bcmp(eh_in_p->ether_shost, bif->bif_hf_hwsrc, ETHER_ADDR_LEN)
9687 discarding = (bif->bif_ifflags & IFBIF_STP) != 0 &&
9688 bif->bif_stp.bp_state == BSTP_IFSTATE_DISCARDING;
9711 bridge_bstp_input_list(&bif->bif_stp, list.head);
9737 if ((bif->bif_ifflags & IFBIF_LEARNING) != 0) {
9738 error = bridge_rtupdate(sc, shost, vlan, bif, 0, IFBAF_DYNAMIC);
9743 if (error != 0 && bif->bif_addrmax) {
9749 if ((bif->bif_ifflags & IFBIF_STP) != 0 &&
9750 bif->bif_stp.bp_state == BSTP_IFSTATE_LEARNING) {
9764 checksum_offload = bif_has_checksum_offload(bif);
9770 list = bridge_filter_arp_list(bif, list.head);
9779 list = bridge_filter_checksum_list(bridge_ifp, bif,
9786 } else if (is_ifp_mac && bif == sc->sc_mac_nat_bif &&
9809 if (sc->sc_mac_nat_bif == bif) {
9820 bridge_broadcast_list(sc, bif, etypef,
9849 member_input = bridge_find_member(sc, dhost, bif);
9856 if (bridge_find_member(sc, shost, bif) != NULL) {
9871 bridge_broadcast_list(sc, bif, etypef, m,
9878 bridge_forward_list(sc, bif, dst_if, etypef, list.head);