Lines Matching refs:rt
285 #define MFCFIND(mfcbp, o, g, rt) { \ argument
287 rt = NULL; \
294 rt = _mb_rt; \
444 struct mfc *rt; in get_sg_cnt() local
449 MFCFIND(mfcbp, req->src.s_addr, req->grp.s_addr, rt); in get_sg_cnt()
451 if (rt != NULL) { in get_sg_cnt()
452 mutex_enter(&rt->mfc_mutex); in get_sg_cnt()
453 req->pktcnt = rt->mfc_pkt_cnt; in get_sg_cnt()
454 req->bytecnt = rt->mfc_byte_cnt; in get_sg_cnt()
455 req->wrong_if = rt->mfc_wrong_if; in get_sg_cnt()
456 mutex_exit(&rt->mfc_mutex); in get_sg_cnt()
757 struct mfc *rt; in ip_mrouter_stack_destroy() local
763 while ((rt = mfcbp->mfcb_mfc) != NULL) { in ip_mrouter_stack_destroy()
767 mfcbp->mfcb_mfc = rt->mfc_next; in ip_mrouter_stack_destroy()
768 free_queue(rt); in ip_mrouter_stack_destroy()
769 mi_free(rt); in ip_mrouter_stack_destroy()
1167 struct mfc *rt; in add_mfc() local
1204 mfccp->mfcc_mcastgrp.s_addr, rt); in add_mfc()
1207 if (rt) { in add_mfc()
1215 mutex_enter(&rt->mfc_mutex); in add_mfc()
1216 rt->mfc_parent = mfccp->mfcc_parent; in add_mfc()
1220 rt->mfc_ttls[i] = mfccp->mfcc_ttls[i]; in add_mfc()
1222 mutex_exit(&rt->mfc_mutex); in add_mfc()
1231 for (rt = mfcbp->mfcb_mfc, nstl = 0; rt; rt = rt->mfc_next) { in add_mfc()
1232 mutex_enter(&rt->mfc_mutex); in add_mfc()
1233 if ((rt->mfc_origin.s_addr == mfccp->mfcc_origin.s_addr) && in add_mfc()
1234 (rt->mfc_mcastgrp.s_addr == mfccp->mfcc_mcastgrp.s_addr) && in add_mfc()
1235 (rt->mfc_rte != NULL) && in add_mfc()
1236 !(rt->mfc_marks & MFCB_MARK_CONDEMNED)) { in add_mfc()
1253 fill_route(rt, mfccp, ipst); in add_mfc()
1259 if (rt->mfc_timeout_id != 0) { in add_mfc()
1261 id = rt->mfc_timeout_id; in add_mfc()
1267 rt->mfc_timeout_id = 0; in add_mfc()
1275 mutex_exit(&rt->mfc_mutex); in add_mfc()
1277 mutex_enter(&rt->mfc_mutex); in add_mfc()
1286 while (rt->mfc_rte != NULL) { in add_mfc()
1287 rte = rt->mfc_rte; in add_mfc()
1288 rt->mfc_rte = rte->rte_next; in add_mfc()
1289 mutex_exit(&rt->mfc_mutex); in add_mfc()
1291 rte->mp->b_rptr, rte->ill, 0, rt); in add_mfc()
1294 mutex_enter(&rt->mfc_mutex); in add_mfc()
1297 mutex_exit(&rt->mfc_mutex); in add_mfc()
1319 for (rt = mfcbp->mfcb_mfc; rt; rt = rt->mfc_next) { in add_mfc()
1321 mutex_enter(&rt->mfc_mutex); in add_mfc()
1322 if ((rt->mfc_origin.s_addr == in add_mfc()
1324 (rt->mfc_mcastgrp.s_addr == in add_mfc()
1326 (!(rt->mfc_marks & MFCB_MARK_CONDEMNED))) { in add_mfc()
1327 fill_route(rt, mfccp, ipst); in add_mfc()
1328 mutex_exit(&rt->mfc_mutex); in add_mfc()
1331 mutex_exit(&rt->mfc_mutex); in add_mfc()
1335 if (rt == NULL) { in add_mfc()
1336 rt = (struct mfc *)mi_zalloc(sizeof (struct mfc)); in add_mfc()
1337 if (rt == NULL) { in add_mfc()
1345 mutex_enter(&rt->mfc_mutex); in add_mfc()
1346 fill_route(rt, mfccp, ipst); in add_mfc()
1349 rt->mfc_next = mfcbp->mfcb_mfc; in add_mfc()
1350 mfcbp->mfcb_mfc = rt; in add_mfc()
1351 mutex_exit(&rt->mfc_mutex); in add_mfc()
1364 fill_route(struct mfc *rt, struct mfcctl *mfccp, ip_stack_t *ipst) in fill_route() argument
1368 rt->mfc_origin = mfccp->mfcc_origin; in fill_route()
1369 rt->mfc_mcastgrp = mfccp->mfcc_mcastgrp; in fill_route()
1370 rt->mfc_parent = mfccp->mfcc_parent; in fill_route()
1373 rt->mfc_ttls[i] = mfccp->mfcc_ttls[i]; in fill_route()
1377 rt->mfc_pkt_cnt = 0; in fill_route()
1378 rt->mfc_byte_cnt = 0; in fill_route()
1379 rt->mfc_wrong_if = 0; in fill_route()
1380 rt->mfc_last_assert.tv_sec = rt->mfc_last_assert.tv_nsec = 0; in fill_route()
1443 struct mfc *rt; in del_mfc() local
1461 for (rt = ipst->ips_mfcs[hash].mfcb_mfc; rt; rt = rt->mfc_next) { in del_mfc()
1462 mutex_enter(&rt->mfc_mutex); in del_mfc()
1463 if (origin.s_addr == rt->mfc_origin.s_addr && in del_mfc()
1464 mcastgrp.s_addr == rt->mfc_mcastgrp.s_addr && in del_mfc()
1465 rt->mfc_rte == NULL && in del_mfc()
1466 !(rt->mfc_marks & MFCB_MARK_CONDEMNED)) in del_mfc()
1468 mutex_exit(&rt->mfc_mutex); in del_mfc()
1475 if (rt == NULL) { in del_mfc()
1486 if (rt->mfc_timeout_id != 0) { in del_mfc()
1492 rt->mfc_timeout_id = 0; in del_mfc()
1493 mutex_exit(&rt->mfc_mutex); in del_mfc()
1494 (void) untimeout(rt->mfc_timeout_id); in del_mfc()
1495 mutex_enter(&rt->mfc_mutex); in del_mfc()
1498 ASSERT(rt->mfc_rte == NULL); in del_mfc()
1504 rt->mfc_marks |= MFCB_MARK_CONDEMNED; in del_mfc()
1505 mutex_exit(&rt->mfc_mutex); in del_mfc()
1537 struct mfc *rt; in ip_mforward() local
1640 MFCFIND(mfcbp, src, dst, rt); in ip_mforward()
1643 if (rt != NULL) { in ip_mforward()
1651 0, rt); in ip_mforward()
1653 ret = ip_mdq(mp, ipha, ill, tunnel_src, rt); in ip_mforward()
1981 struct mfc *rt) in ip_mdq() argument
2009 vifi = rt->mfc_parent; in ip_mdq()
2066 rt->mfc_wrong_if++; in ip_mdq()
2076 if (ipst->ips_pim_assert && rt->mfc_ttls[vifi] > 0 && in ip_mdq()
2123 mutex_enter(&rt->mfc_mutex); in ip_mdq()
2124 rt->mfc_pkt_cnt++; in ip_mdq()
2125 rt->mfc_byte_cnt += plen; in ip_mdq()
2126 mutex_exit(&rt->mfc_mutex); in ip_mdq()
2144 if ((rt->mfc_ttls[vifi] > 0) && in ip_mdq()
2145 (ipha->ipha_ttl > rt->mfc_ttls[vifi])) { in ip_mdq()
2778 struct mfc *rt; in reset_mrt_ill() local
2787 if ((rt = ipst->ips_mfcs[i].mfcb_mfc) != NULL) { in reset_mrt_ill()
2793 while (rt != NULL) { in reset_mrt_ill()
2794 mutex_enter(&rt->mfc_mutex); in reset_mrt_ill()
2795 while ((rte = rt->mfc_rte) != NULL) { in reset_mrt_ill()
2797 (id = rt->mfc_timeout_id) != 0) { in reset_mrt_ill()
2804 mutex_exit(&rt->mfc_mutex); in reset_mrt_ill()
2806 mutex_enter(&rt->mfc_mutex); in reset_mrt_ill()
2816 rt->mfc_rte = rte->rte_next; in reset_mrt_ill()
2821 mutex_exit(&rt->mfc_mutex); in reset_mrt_ill()
2822 rt = rt->mfc_next; in reset_mrt_ill()
3362 struct mfc *rt; in ip_mroute_mrt() local
3374 for (rt = ipst->ips_mfcs[i].mfcb_mfc; rt; rt = rt->mfc_next) { in ip_mroute_mrt()
3375 mutex_enter(&rt->mfc_mutex); in ip_mroute_mrt()
3376 if (rt->mfc_rte != NULL || in ip_mroute_mrt()
3377 (rt->mfc_marks & MFCB_MARK_CONDEMNED)) { in ip_mroute_mrt()
3378 mutex_exit(&rt->mfc_mutex); in ip_mroute_mrt()
3381 mfcc.mfcc_origin = rt->mfc_origin; in ip_mroute_mrt()
3382 mfcc.mfcc_mcastgrp = rt->mfc_mcastgrp; in ip_mroute_mrt()
3383 mfcc.mfcc_parent = rt->mfc_parent; in ip_mroute_mrt()
3384 mfcc.mfcc_pkt_cnt = rt->mfc_pkt_cnt; in ip_mroute_mrt()
3387 mfcc.mfcc_ttls[j] = rt->mfc_ttls[j]; in ip_mroute_mrt()
3392 mutex_exit(&rt->mfc_mutex); in ip_mroute_mrt()