Lines Matching defs:brt
1574 struct bridge_rtnode *brt;
1583 CK_LIST_FOREACH(brt, &sc->sc_rtlist, brt_list)
1595 CK_LIST_FOREACH(brt, &sc->sc_rtlist, brt_list) {
1598 strlcpy(bareq.ifba_ifsname, brt->brt_ifp->if_xname,
1600 memcpy(bareq.ifba_dst, brt->brt_addr, sizeof(brt->brt_addr));
1601 bareq.ifba_vlan = brt->brt_vlan;
1602 if ((brt->brt_flags & IFBAF_TYPEMASK) == IFBAF_DYNAMIC &&
1603 time_uptime < brt->brt_expire)
1604 bareq.ifba_expire = brt->brt_expire - time_uptime;
1607 bareq.ifba_flags = brt->brt_flags;
2879 struct bridge_rtnode *brt;
2895 if ((brt = bridge_rtnode_lookup(sc, dst, vlan)) == NULL) {
2922 brt = uma_zalloc(V_bridge_rtnode_zone, M_NOWAIT | M_ZERO);
2923 if (brt == NULL) {
2927 brt->brt_vnet = curvnet;
2930 brt->brt_flags = IFBAF_STICKY;
2932 brt->brt_flags = IFBAF_DYNAMIC;
2934 memcpy(brt->brt_addr, dst, ETHER_ADDR_LEN);
2935 brt->brt_vlan = vlan;
2937 brt->brt_dst = bif;
2938 if ((error = bridge_rtnode_insert(sc, brt)) != 0) {
2939 uma_zfree(V_bridge_rtnode_zone, brt);
2948 if ((brt->brt_flags & IFBAF_TYPEMASK) == IFBAF_DYNAMIC &&
2949 (obif = brt->brt_dst) != bif) {
2953 brt->brt_dst->bif_addrcnt--;
2954 brt->brt_dst = bif;
2955 brt->brt_dst->bif_addrcnt++;
2963 &brt->brt_addr[0], ":",
2964 brt->brt_vlan,
2971 brt->brt_expire = time_uptime + sc->sc_brttimeout;
2973 brt->brt_flags = flags;
2986 struct bridge_rtnode *brt;
2990 if ((brt = bridge_rtnode_lookup(sc, addr, vlan)) == NULL)
2993 return (brt->brt_ifp);
3006 struct bridge_rtnode *brt, *nbrt;
3020 CK_LIST_FOREACH_SAFE(brt, &sc->sc_rtlist, brt_list, nbrt) {
3021 if ((brt->brt_flags & IFBAF_TYPEMASK) == IFBAF_DYNAMIC) {
3022 bridge_rtnode_destroy(sc, brt);
3059 struct bridge_rtnode *brt, *nbrt;
3063 CK_LIST_FOREACH_SAFE(brt, &sc->sc_rtlist, brt_list, nbrt) {
3064 if ((brt->brt_flags & IFBAF_TYPEMASK) == IFBAF_DYNAMIC) {
3065 if (time_uptime >= brt->brt_expire)
3066 bridge_rtnode_destroy(sc, brt);
3079 struct bridge_rtnode *brt, *nbrt;
3083 CK_LIST_FOREACH_SAFE(brt, &sc->sc_rtlist, brt_list, nbrt) {
3084 if (full || (brt->brt_flags & IFBAF_TYPEMASK) == IFBAF_DYNAMIC)
3085 bridge_rtnode_destroy(sc, brt);
3097 struct bridge_rtnode *brt;
3106 while ((brt = bridge_rtnode_lookup(sc, addr, vlan)) != NULL) {
3107 bridge_rtnode_destroy(sc, brt);
3124 struct bridge_rtnode *brt, *nbrt;
3128 CK_LIST_FOREACH_SAFE(brt, &sc->sc_rtlist, brt_list, nbrt) {
3129 if (brt->brt_ifp == ifp && (full ||
3130 (brt->brt_flags & IFBAF_TYPEMASK) == IFBAF_DYNAMIC))
3131 bridge_rtnode_destroy(sc, brt);
3226 struct bridge_rtnode *brt;
3233 CK_LIST_FOREACH(brt, &sc->sc_rthash[hash], brt_hash) {
3234 dir = bridge_rtnode_addr_cmp(addr, brt->brt_addr);
3235 if (dir == 0 && (brt->brt_vlan == vlan || vlan == DOT1Q_VID_RSVD_IMPL))
3236 return (brt);
3251 bridge_rtnode_insert(struct bridge_softc *sc, struct bridge_rtnode *brt)
3259 hash = bridge_rthash(sc, brt->brt_addr);
3263 CK_LIST_INSERT_HEAD(&sc->sc_rthash[hash], brt, brt_hash);
3268 dir = bridge_rtnode_addr_cmp(brt->brt_addr, lbrt->brt_addr);
3269 if (dir == 0 && brt->brt_vlan == lbrt->brt_vlan)
3272 CK_LIST_INSERT_BEFORE(lbrt, brt, brt_hash);
3276 CK_LIST_INSERT_AFTER(lbrt, brt, brt_hash);
3287 CK_LIST_INSERT_HEAD(&sc->sc_rtlist, brt, brt_list);
3296 struct bridge_rtnode *brt;
3298 brt = __containerof(ctx, struct bridge_rtnode, brt_epoch_ctx);
3300 CURVNET_SET(brt->brt_vnet);
3301 uma_zfree(V_bridge_rtnode_zone, brt);
3311 bridge_rtnode_destroy(struct bridge_softc *sc, struct bridge_rtnode *brt)
3315 CK_LIST_REMOVE(brt, brt_hash);
3317 CK_LIST_REMOVE(brt, brt_list);
3319 brt->brt_dst->bif_addrcnt--;
3321 NET_EPOCH_CALL(bridge_rtnode_destroy_cb, &brt->brt_epoch_ctx);
3333 struct bridge_rtnode *brt;
3345 CK_LIST_FOREACH(brt, &sc->sc_rtlist, brt_list) {
3347 if (brt->brt_ifp == ifp &&
3348 brt->brt_expire > time_uptime + age &&
3349 (brt->brt_flags & IFBAF_TYPEMASK) == IFBAF_DYNAMIC)
3350 brt->brt_expire = time_uptime + age;