Lines Matching refs:bif
769 struct bridge_iflist *bif; in bridge_reassign() local
773 while ((bif = CK_LIST_FIRST(&sc->sc_iflist)) != NULL) in bridge_reassign()
774 bridge_delete_member(sc, bif, 0); in bridge_reassign()
776 while ((bif = CK_LIST_FIRST(&sc->sc_spanlist)) != NULL) { in bridge_reassign()
777 bridge_delete_span(sc, bif); in bridge_reassign()
794 struct bridge_iflist *bif; in bridge_get_softc() local
798 bif = ifp->if_bridge; in bridge_get_softc()
799 if (bif == NULL) in bridge_get_softc()
801 return (bif->bif_sc); in bridge_get_softc()
915 struct bridge_iflist *bif; in bridge_clone_destroy() local
923 while ((bif = CK_LIST_FIRST(&sc->sc_iflist)) != NULL) in bridge_clone_destroy()
924 bridge_delete_member(sc, bif, 0); in bridge_clone_destroy()
926 while ((bif = CK_LIST_FIRST(&sc->sc_spanlist)) != NULL) { in bridge_clone_destroy()
927 bridge_delete_span(sc, bif); in bridge_clone_destroy()
967 struct bridge_iflist *bif; in bridge_ioctl() local
1082 CK_LIST_FOREACH(bif, &sc->sc_iflist, bif_next) { in bridge_ioctl()
1083 error = (*bif->bif_ifp->if_ioctl)(bif->bif_ifp, in bridge_ioctl()
1089 bif->bif_ifp->if_xname); in bridge_ioctl()
1097 CK_LIST_FOREACH(bif, &sc->sc_iflist, bif_next) { in bridge_ioctl()
1098 (*bif->bif_ifp->if_ioctl)(bif->bif_ifp, in bridge_ioctl()
1131 struct bridge_iflist *bif; in bridge_mutecaps() local
1139 CK_LIST_FOREACH(bif, &sc->sc_iflist, bif_next) { in bridge_mutecaps()
1141 mask &= bif->bif_savedcaps; in bridge_mutecaps()
1144 CK_LIST_FOREACH(bif, &sc->sc_iflist, bif_next) { in bridge_mutecaps()
1145 enabled = bif->bif_ifp->if_capenable; in bridge_mutecaps()
1150 bridge_set_ifcap(sc, bif, enabled); in bridge_mutecaps()
1155 bridge_set_ifcap(struct bridge_softc *sc, struct bridge_iflist *bif, int set) in bridge_set_ifcap() argument
1157 struct ifnet *ifp = bif->bif_ifp; in bridge_set_ifcap()
1187 struct bridge_iflist *bif; in bridge_lookup_member() local
1192 CK_LIST_FOREACH(bif, &sc->sc_iflist, bif_next) { in bridge_lookup_member()
1193 ifp = bif->bif_ifp; in bridge_lookup_member()
1195 return (bif); in bridge_lookup_member()
1216 struct bridge_iflist *bif; in bridge_delete_member_cb() local
1218 bif = __containerof(ctx, struct bridge_iflist, bif_epoch_ctx); in bridge_delete_member_cb()
1220 free(bif, M_DEVBUF); in bridge_delete_member_cb()
1229 bridge_delete_member(struct bridge_softc *sc, struct bridge_iflist *bif, in bridge_delete_member() argument
1232 struct ifnet *ifs = bif->bif_ifp; in bridge_delete_member()
1238 if (bif->bif_flags & IFBIF_STP) in bridge_delete_member()
1239 bstp_disable(&bif->bif_stp); in bridge_delete_member()
1242 CK_LIST_REMOVE(bif, bif_next); in bridge_delete_member()
1269 KASSERT(bif->bif_addrcnt == 0, in bridge_delete_member()
1270 ("%s: %d bridge routes referenced", __func__, bif->bif_addrcnt)); in bridge_delete_member()
1298 bridge_set_ifcap(sc, bif, bif->bif_savedcaps); in bridge_delete_member()
1300 bstp_destroy(&bif->bif_stp); /* prepare to free */ in bridge_delete_member()
1302 NET_EPOCH_CALL(bridge_delete_member_cb, &bif->bif_epoch_ctx); in bridge_delete_member()
1311 bridge_delete_span(struct bridge_softc *sc, struct bridge_iflist *bif) in bridge_delete_span() argument
1315 KASSERT(bif->bif_ifp->if_bridge == NULL, in bridge_delete_span()
1318 CK_LIST_REMOVE(bif, bif_next); in bridge_delete_span()
1320 NET_EPOCH_CALL(bridge_delete_member_cb, &bif->bif_epoch_ctx); in bridge_delete_span()
1327 struct bridge_iflist *bif = NULL; in bridge_ioctl_add() local
1362 CK_LIST_FOREACH(bif, &sc->sc_spanlist, bif_next) in bridge_ioctl_add()
1363 if (ifs == bif->bif_ifp) in bridge_ioctl_add()
1405 CK_LIST_FOREACH(bif, &sc->sc_iflist, bif_next) { in bridge_ioctl_add()
1406 if (in6ifa_llaonifp(bif->bif_ifp)) { in bridge_ioctl_add()
1407 in6_ifdetach(bif->bif_ifp); in bridge_ioctl_add()
1412 bif->bif_ifp->if_xname); in bridge_ioctl_add()
1471 bif = malloc(sizeof(*bif), M_DEVBUF, M_NOWAIT|M_ZERO); in bridge_ioctl_add()
1472 if (bif == NULL) in bridge_ioctl_add()
1475 bif->bif_sc = sc; in bridge_ioctl_add()
1476 bif->bif_ifp = ifs; in bridge_ioctl_add()
1477 bif->bif_flags = IFBIF_LEARNING | IFBIF_DISCOVER; in bridge_ioctl_add()
1478 bif->bif_savedcaps = ifs->if_capenable; in bridge_ioctl_add()
1492 ifs->if_bridge = bif; in bridge_ioctl_add()
1496 bstp_create(&sc->sc_stp, &bif->bif_stp, bif->bif_ifp); in bridge_ioctl_add()
1502 CK_LIST_INSERT_HEAD(&sc->sc_iflist, bif, bif_next); in bridge_ioctl_add()
1517 bridge_delete_member(sc, bif, 0); in bridge_ioctl_add()
1525 struct bridge_iflist *bif; in bridge_ioctl_del() local
1527 bif = bridge_lookup_member(sc, req->ifbr_ifsname); in bridge_ioctl_del()
1528 if (bif == NULL) in bridge_ioctl_del()
1531 bridge_delete_member(sc, bif, 0); in bridge_ioctl_del()
1540 struct bridge_iflist *bif; in bridge_ioctl_gifflags() local
1543 bif = bridge_lookup_member(sc, req->ifbr_ifsname); in bridge_ioctl_gifflags()
1544 if (bif == NULL) in bridge_ioctl_gifflags()
1547 bp = &bif->bif_stp; in bridge_ioctl_gifflags()
1548 req->ifbr_ifsflags = bif->bif_flags; in bridge_ioctl_gifflags()
1552 req->ifbr_portno = bif->bif_ifp->if_index & 0xfff; in bridge_ioctl_gifflags()
1556 req->ifbr_addrcnt = bif->bif_addrcnt; in bridge_ioctl_gifflags()
1557 req->ifbr_addrmax = bif->bif_addrmax; in bridge_ioctl_gifflags()
1558 req->ifbr_addrexceeded = bif->bif_addrexceeded; in bridge_ioctl_gifflags()
1559 req->ifbr_pvid = bif->bif_pvid; in bridge_ioctl_gifflags()
1582 struct bridge_iflist *bif; in bridge_ioctl_sifflags() local
1586 bif = bridge_lookup_member(sc, req->ifbr_ifsname); in bridge_ioctl_sifflags()
1587 if (bif == NULL) in bridge_ioctl_sifflags()
1589 bp = &bif->bif_stp; in bridge_ioctl_sifflags()
1598 if ((bif->bif_flags & IFBIF_STP) == 0) { in bridge_ioctl_sifflags()
1599 error = bstp_enable(&bif->bif_stp); in bridge_ioctl_sifflags()
1607 if ((bif->bif_flags & IFBIF_STP) != 0) in bridge_ioctl_sifflags()
1608 bstp_disable(&bif->bif_stp); in bridge_ioctl_sifflags()
1618 bif->bif_flags = req->ifbr_ifsflags & IFBIFMASK; in bridge_ioctl_sifflags()
1650 struct bridge_iflist *bif; in bridge_ioctl_gifs() local
1656 CK_LIST_FOREACH(bif, &sc->sc_iflist, bif_next) in bridge_ioctl_gifs()
1658 CK_LIST_FOREACH(bif, &sc->sc_spanlist, bif_next) in bridge_ioctl_gifs()
1674 CK_LIST_FOREACH(bif, &sc->sc_iflist, bif_next) { in bridge_ioctl_gifs()
1678 strlcpy(breq.ifbr_ifsname, bif->bif_ifp->if_xname, in bridge_ioctl_gifs()
1689 CK_LIST_FOREACH(bif, &sc->sc_spanlist, bif_next) { in bridge_ioctl_gifs()
1693 strlcpy(breq.ifbr_ifsname, bif->bif_ifp->if_xname, in bridge_ioctl_gifs()
1695 breq.ifbr_ifsflags = bif->bif_flags; in bridge_ioctl_gifs()
1696 breq.ifbr_portno = bif->bif_ifp->if_index & 0xfff; in bridge_ioctl_gifs()
1764 struct bridge_iflist *bif; in bridge_ioctl_saddr() local
1769 bif = bridge_lookup_member(sc, req->ifba_ifsname); in bridge_ioctl_saddr()
1770 if (bif == NULL) { in bridge_ioctl_saddr()
1776 error = bridge_rtupdate(sc, req->ifba_dst, req->ifba_vlan, bif, 1, in bridge_ioctl_saddr()
1902 struct bridge_iflist *bif; in bridge_ioctl_sifprio() local
1904 bif = bridge_lookup_member(sc, req->ifbr_ifsname); in bridge_ioctl_sifprio()
1905 if (bif == NULL) in bridge_ioctl_sifprio()
1908 return (bstp_set_port_priority(&bif->bif_stp, req->ifbr_priority)); in bridge_ioctl_sifprio()
1915 struct bridge_iflist *bif; in bridge_ioctl_sifcost() local
1917 bif = bridge_lookup_member(sc, req->ifbr_ifsname); in bridge_ioctl_sifcost()
1918 if (bif == NULL) in bridge_ioctl_sifcost()
1921 return (bstp_set_path_cost(&bif->bif_stp, req->ifbr_path_cost)); in bridge_ioctl_sifcost()
1928 struct bridge_iflist *bif; in bridge_ioctl_sifmaxaddr() local
1930 bif = bridge_lookup_member(sc, req->ifbr_ifsname); in bridge_ioctl_sifmaxaddr()
1931 if (bif == NULL) in bridge_ioctl_sifmaxaddr()
1934 bif->bif_addrmax = req->ifbr_addrmax; in bridge_ioctl_sifmaxaddr()
1942 struct bridge_iflist *bif; in bridge_ioctl_sifpvid() local
1944 bif = bridge_lookup_member(sc, req->ifbr_ifsname); in bridge_ioctl_sifpvid()
1945 if (bif == NULL) in bridge_ioctl_sifpvid()
1952 bif->bif_flags |= IFBIF_VLANFILTER; in bridge_ioctl_sifpvid()
1953 bif->bif_pvid = req->ifbr_pvid; in bridge_ioctl_sifpvid()
1961 struct bridge_iflist *bif; in bridge_ioctl_sifvlanset() local
1963 bif = bridge_lookup_member(sc, req->bv_ifname); in bridge_ioctl_sifvlanset()
1964 if (bif == NULL) in bridge_ioctl_sifvlanset()
1975 BIT_COPY(BRVLAN_SETSIZE, &req->bv_set, &bif->bif_vlan_set); in bridge_ioctl_sifvlanset()
1980 BIT_OR(BRVLAN_SETSIZE, &bif->bif_vlan_set, &req->bv_set); in bridge_ioctl_sifvlanset()
1985 BIT_ANDNOT(BRVLAN_SETSIZE, &bif->bif_vlan_set, &req->bv_set); in bridge_ioctl_sifvlanset()
1998 bif->bif_flags |= IFBIF_VLANFILTER; in bridge_ioctl_sifvlanset()
2007 struct bridge_iflist *bif; in bridge_ioctl_gifvlanset() local
2009 bif = bridge_lookup_member(sc, req->bv_ifname); in bridge_ioctl_gifvlanset()
2010 if (bif == NULL) in bridge_ioctl_gifvlanset()
2013 BIT_COPY(BRVLAN_SETSIZE, &bif->bif_vlan_set, &req->bv_set); in bridge_ioctl_gifvlanset()
2021 struct bridge_iflist *bif = NULL; in bridge_ioctl_addspan() local
2028 CK_LIST_FOREACH(bif, &sc->sc_spanlist, bif_next) in bridge_ioctl_addspan()
2029 if (ifs == bif->bif_ifp) in bridge_ioctl_addspan()
2046 bif = malloc(sizeof(*bif), M_DEVBUF, M_NOWAIT|M_ZERO); in bridge_ioctl_addspan()
2047 if (bif == NULL) in bridge_ioctl_addspan()
2050 bif->bif_ifp = ifs; in bridge_ioctl_addspan()
2051 bif->bif_flags = IFBIF_SPAN; in bridge_ioctl_addspan()
2053 CK_LIST_INSERT_HEAD(&sc->sc_spanlist, bif, bif_next); in bridge_ioctl_addspan()
2062 struct bridge_iflist *bif; in bridge_ioctl_delspan() local
2069 CK_LIST_FOREACH(bif, &sc->sc_spanlist, bif_next) in bridge_ioctl_delspan()
2070 if (ifs == bif->bif_ifp) in bridge_ioctl_delspan()
2073 if (bif == NULL) in bridge_ioctl_delspan()
2076 bridge_delete_span(sc, bif); in bridge_ioctl_delspan()
2124 struct bridge_iflist *bif; in bridge_ioctl_gifsstp() local
2131 CK_LIST_FOREACH(bif, &sc->sc_iflist, bif_next) { in bridge_ioctl_gifsstp()
2132 if ((bif->bif_flags & IFBIF_STP) != 0) in bridge_ioctl_gifsstp()
2150 CK_LIST_FOREACH(bif, &sc->sc_iflist, bif_next) { in bridge_ioctl_gifsstp()
2154 if ((bif->bif_flags & IFBIF_STP) == 0) in bridge_ioctl_gifsstp()
2157 bp = &bif->bif_stp; in bridge_ioctl_gifsstp()
2158 bpreq.ifbp_portno = bif->bif_ifp->if_index & 0xfff; in bridge_ioctl_gifsstp()
2202 struct bridge_iflist *bif = ifp->if_bridge; in bridge_ifdetach() local
2205 if (bif) in bridge_ifdetach()
2206 sc = bif->bif_sc; in bridge_ifdetach()
2220 bridge_delete_member(sc, bif, 1); in bridge_ifdetach()
2229 CK_LIST_FOREACH(bif, &sc->sc_spanlist, bif_next) in bridge_ifdetach()
2230 if (ifp == bif->bif_ifp) { in bridge_ifdetach()
2231 bridge_delete_span(sc, bif); in bridge_ifdetach()
2298 struct bridge_iflist *bif) in bridge_enqueue() argument
2308 if (bif == NULL) in bridge_enqueue()
2309 bif = bridge_lookup_member_if(sc, dst_ifp); in bridge_enqueue()
2310 if (bif == NULL) { in bridge_enqueue()
2328 if ((bif->bif_flags & IFBIF_VLANFILTER) && in bridge_enqueue()
2329 bif->bif_pvid != DOT1Q_VID_NULL && in bridge_enqueue()
2330 VLANTAGOF(m) == bif->bif_pvid) { in bridge_enqueue()
2383 struct bridge_iflist *bif = ifp->if_bridge; in bridge_dummynet() local
2386 if (bif) in bridge_dummynet()
2387 sc = bif->bif_sc; in bridge_dummynet()
2466 struct bridge_iflist *bif; in bridge_output() local
2472 CK_LIST_FOREACH(bif, &sc->sc_iflist, bif_next) { in bridge_output()
2473 dst_if = bif->bif_ifp; in bridge_output()
2486 if (dst_if != ifp && (bif->bif_flags & IFBIF_STP) && in bridge_output()
2487 bif->bif_stp.bp_state == BSTP_IFSTATE_DISCARDING) in bridge_output()
2490 if (CK_LIST_NEXT(bif, bif_next) == NULL) { in bridge_output()
2501 bridge_enqueue(sc, dst_if, mc, bif); in bridge_output()
2760 struct bridge_iflist *bif, *bif2; in bridge_input() local
2772 bif = ifp->if_bridge; in bridge_input()
2773 if (bif) in bridge_input()
2774 sc = bif->bif_sc; in bridge_input()
2814 if (!bridge_vfilter_in(bif, m)) { in bridge_input()
2828 bstp_input(&bif->bif_stp, ifp, m); /* consumes mbuf */ in bridge_input()
2832 if ((bif->bif_flags & IFBIF_STP) && in bridge_input()
2833 bif->bif_stp.bp_state == BSTP_IFSTATE_DISCARDING) { in bridge_input()
2848 bridge_forward(sc, bif, mc); in bridge_input()
2886 if ((bif->bif_flags & IFBIF_STP) && in bridge_input()
2887 bif->bif_stp.bp_state == BSTP_IFSTATE_DISCARDING) { in bridge_input()
2919 if (bif->bif_flags & IFBIF_LEARNING) { \ in bridge_input()
2921 vlan, bif, 0, IFBAF_DYNAMIC); \ in bridge_input()
2922 if (error && bif->bif_addrmax) { \ in bridge_input()
2996 bridge_forward(sc, bif, m); in bridge_input()
3148 struct bridge_iflist *bif; in bridge_span() local
3157 CK_LIST_FOREACH(bif, &sc->sc_spanlist, bif_next) { in bridge_span()
3158 dst_if = bif->bif_ifp; in bridge_span()
3169 bridge_enqueue(sc, dst_if, mc, bif); in bridge_span()
3285 ether_vlanid_t vlan, struct bridge_iflist *bif, in bridge_rtupdate() argument
3321 if (bif->bif_addrmax && bif->bif_addrcnt >= bif->bif_addrmax) { in bridge_rtupdate()
3322 bif->bif_addrexceeded++; in bridge_rtupdate()
3341 if (bif->bif_flags & IFBIF_STICKY) in bridge_rtupdate()
3349 brt->brt_dst = bif; in bridge_rtupdate()
3355 bif->bif_addrcnt++; in bridge_rtupdate()
3361 (obif = brt->brt_dst) != bif) { in bridge_rtupdate()
3366 brt->brt_dst = bif; in bridge_rtupdate()
3378 bif->bif_ifp->if_xname); in bridge_rtupdate()
3747 struct bridge_iflist *bif = NULL; in bridge_rtable_expire() local
3753 bif = ifp->if_bridge; in bridge_rtable_expire()
3754 if (bif) in bridge_rtable_expire()
3755 sc = bif->bif_sc; in bridge_rtable_expire()
3786 struct bridge_iflist *bif = ifp->if_bridge; in bridge_state_change() local
3787 struct bridge_softc *sc = bif->bif_sc; in bridge_state_change()
4303 struct bridge_iflist *bif; in bridge_linkstate() local
4308 bif = ifp->if_bridge; in bridge_linkstate()
4309 if (bif) in bridge_linkstate()
4310 sc = bif->bif_sc; in bridge_linkstate()
4314 bstp_linkstate(&bif->bif_stp); in bridge_linkstate()
4323 struct bridge_iflist *bif; in bridge_linkcheck() local
4331 CK_LIST_FOREACH(bif, &sc->sc_iflist, bif_next) { in bridge_linkcheck()
4332 if (bif->bif_ifp->if_capabilities & IFCAP_LINKSTATE) in bridge_linkcheck()
4334 if (bif->bif_ifp->if_link_state == LINK_STATE_UP) { in bridge_linkcheck()