Lines Matching defs:brt
196 PSLIST_WRITER_INSERT_HEAD(&(_sc)->sc_rtlist, brt, brt_list)
207 PSLIST_WRITER_INSERT_HEAD(&(_sc)->sc_rthash[(_hash)], brt, brt_hash)
1137 struct bridge_rtnode *brt;
1153 BRIDGE_RTLIST_WRITER_FOREACH(brt, sc) {
1157 strlcpy(bareq.ifba_ifsname, brt->brt_ifp->if_xname,
1159 memcpy(bareq.ifba_dst, brt->brt_addr, sizeof(brt->brt_addr));
1160 if ((brt->brt_flags & IFBAF_TYPEMASK) == IFBAF_DYNAMIC) {
1161 bareq.ifba_expire = brt->brt_expire - time_uptime;
1164 bareq.ifba_flags = brt->brt_flags;
2204 struct bridge_rtnode *brt;
2215 brt = pool_get(&bridge_rtnode_pool, PR_NOWAIT);
2216 if (brt == NULL)
2219 memset(brt, 0, sizeof(*brt));
2220 brt->brt_expire = time_uptime + sc->sc_brttimeout;
2221 brt->brt_flags = IFBAF_DYNAMIC;
2222 memcpy(brt->brt_addr, dst, ETHER_ADDR_LEN);
2223 PSLIST_ENTRY_INIT(brt, brt_list);
2224 PSLIST_ENTRY_INIT(brt, brt_hash);
2227 error = bridge_rtnode_insert(sc, brt);
2231 pool_put(&bridge_rtnode_pool, brt);
2235 *brtp = brt;
2248 struct bridge_rtnode *brt;
2257 brt = bridge_rtnode_lookup(sc, dst);
2259 if (brt != NULL) {
2260 brt->brt_ifp = dst_if;
2262 brt->brt_flags = flags;
2264 brt->brt_expire = 0;
2266 brt->brt_expire = time_uptime + sc->sc_brttimeout;
2268 if ((brt->brt_flags & IFBAF_TYPEMASK) == IFBAF_DYNAMIC)
2269 brt->brt_expire = time_uptime + sc->sc_brttimeout;
2274 if (brt == NULL) {
2277 r = bridge_rtalloc(sc, dst, &brt);
2294 struct bridge_rtnode *brt;
2299 brt = bridge_rtnode_lookup(sc, addr);
2300 if (brt != NULL)
2301 ifs = brt->brt_ifp;
2321 struct bridge_rtnode *brt;
2345 BRIDGE_RTLIST_WRITER_FOREACH(brt, sc) {
2347 if (func(sc, brt, &need_break, arg)) {
2348 bridge_rtnode_remove(sc, brt);
2349 brt_list[i++] = brt;
2366 bridge_rttrim0_cb(struct bridge_softc *sc, struct bridge_rtnode *brt,
2369 if ((brt->brt_flags & IFBAF_TYPEMASK) == IFBAF_DYNAMIC) {
2437 bridge_rtage_cb(struct bridge_softc *sc, struct bridge_rtnode *brt,
2440 if ((brt->brt_flags & IFBAF_TYPEMASK) == IFBAF_DYNAMIC &&
2441 time_uptime >= brt->brt_expire)
2460 bridge_rtflush_cb(struct bridge_softc *sc, struct bridge_rtnode *brt,
2465 if (full || (brt->brt_flags & IFBAF_TYPEMASK) == IFBAF_DYNAMIC)
2490 struct bridge_rtnode *brt;
2493 if ((brt = bridge_rtnode_lookup(sc, addr)) == NULL) {
2497 bridge_rtnode_remove(sc, brt);
2501 bridge_rtnode_destroy(brt);
2514 struct bridge_rtnode *brt;
2519 BRIDGE_RTLIST_WRITER_FOREACH(brt, sc) {
2520 if (brt->brt_ifp == ifp)
2523 if (brt == NULL) {
2527 bridge_rtnode_remove(sc, brt);
2531 bridge_rtnode_destroy(brt);
2618 struct bridge_rtnode *brt;
2623 BRIDGE_RTHASH_READER_FOREACH(brt, sc, hash) {
2624 dir = memcmp(addr, brt->brt_addr, ETHER_ADDR_LEN);
2626 return brt;
2641 bridge_rtnode_insert(struct bridge_softc *sc, struct bridge_rtnode *brt)
2648 hash = bridge_rthash(sc, brt->brt_addr);
2650 int dir = memcmp(brt->brt_addr, lbrt->brt_addr, ETHER_ADDR_LEN);
2658 BRIDGE_RTHASH_WRITER_INSERT_HEAD(sc, hash, brt);
2660 BRIDGE_RTHASH_WRITER_INSERT_AFTER(prev, brt);
2662 BRIDGE_RTLIST_WRITER_INSERT_HEAD(sc, brt);
2674 bridge_rtnode_remove(struct bridge_softc *sc, struct bridge_rtnode *brt)
2679 BRIDGE_RTHASH_WRITER_REMOVE(brt);
2680 BRIDGE_RTLIST_WRITER_REMOVE(brt);
2690 bridge_rtnode_destroy(struct bridge_rtnode *brt)
2693 PSLIST_ENTRY_DESTROY(brt, brt_list);
2694 PSLIST_ENTRY_DESTROY(brt, brt_hash);
2695 pool_put(&bridge_rtnode_pool, brt);