Lines Matching refs:rt

384 	struct mfc *rt;  in mfc_find()  local
388 LIST_FOREACH(rt, &V_mfchashtbl[MFCHASH(*o, *g)], mfc_hash) { in mfc_find()
389 if (in_hosteq(rt->mfc_origin, *o) && in mfc_find()
390 in_hosteq(rt->mfc_mcastgrp, *g) && in mfc_find()
391 TAILQ_EMPTY(&rt->mfc_stall)) in mfc_find()
395 return (rt); in mfc_find()
569 struct mfc *rt; in get_sg_cnt() local
572 rt = mfc_find(&req->src, &req->grp); in get_sg_cnt()
573 if (rt == NULL) { in get_sg_cnt()
578 req->pktcnt = rt->mfc_pkt_cnt; in get_sg_cnt()
579 req->bytecnt = rt->mfc_byte_cnt; in get_sg_cnt()
580 req->wrong_if = rt->mfc_wrong_if; in get_sg_cnt()
636 struct mfc *rt, *nrt; in if_detached_event() local
638 LIST_FOREACH_SAFE(rt, &V_mfchashtbl[i], mfc_hash, nrt) { in if_detached_event()
639 if (rt->mfc_parent == vifi) { in if_detached_event()
640 expire_mfc(rt); in if_detached_event()
755 struct mfc *rt, *nrt; in X_ip_mrouter_done() local
757 LIST_FOREACH_SAFE(rt, &V_mfchashtbl[i], mfc_hash, nrt) { in X_ip_mrouter_done()
758 expire_mfc(rt); in X_ip_mrouter_done()
990 update_mfc_params(struct mfc *rt, struct mfcctl2 *mfccp) in update_mfc_params() argument
994 rt->mfc_parent = mfccp->mfcc_parent; in update_mfc_params()
996 rt->mfc_ttls[i] = mfccp->mfcc_ttls[i]; in update_mfc_params()
997 rt->mfc_flags[i] = mfccp->mfcc_flags[i] & V_mrt_api_config & in update_mfc_params()
1002 rt->mfc_rp = mfccp->mfcc_rp; in update_mfc_params()
1004 rt->mfc_rp.s_addr = INADDR_ANY; in update_mfc_params()
1011 init_mfc_params(struct mfc *rt, struct mfcctl2 *mfccp) in init_mfc_params() argument
1013 rt->mfc_origin = mfccp->mfcc_origin; in init_mfc_params()
1014 rt->mfc_mcastgrp = mfccp->mfcc_mcastgrp; in init_mfc_params()
1016 update_mfc_params(rt, mfccp); in init_mfc_params()
1019 rt->mfc_pkt_cnt = 0; in init_mfc_params()
1020 rt->mfc_byte_cnt = 0; in init_mfc_params()
1021 rt->mfc_wrong_if = 0; in init_mfc_params()
1022 timevalclear(&rt->mfc_last_assert); in init_mfc_params()
1026 expire_mfc(struct mfc *rt) in expire_mfc() argument
1032 free_bw_list(rt->mfc_bw_meter); in expire_mfc()
1034 TAILQ_FOREACH_SAFE(rte, &rt->mfc_stall, rte_link, nrte) { in expire_mfc()
1036 TAILQ_REMOVE(&rt->mfc_stall, rte, rte_link); in expire_mfc()
1040 LIST_REMOVE(rt, mfc_hash); in expire_mfc()
1041 free(rt, M_MRTABLE); in expire_mfc()
1050 struct mfc *rt; in add_mfc() local
1058 rt = mfc_find(&mfccp->mfcc_origin, &mfccp->mfcc_mcastgrp); in add_mfc()
1061 if (rt) { in add_mfc()
1066 update_mfc_params(rt, mfccp); in add_mfc()
1077 LIST_FOREACH(rt, &V_mfchashtbl[hash], mfc_hash) { in add_mfc()
1078 if (in_hosteq(rt->mfc_origin, mfccp->mfcc_origin) && in add_mfc()
1079 in_hosteq(rt->mfc_mcastgrp, mfccp->mfcc_mcastgrp) && in add_mfc()
1080 !TAILQ_EMPTY(&rt->mfc_stall)) { in add_mfc()
1086 TAILQ_FIRST(&rt->mfc_stall)); in add_mfc()
1090 init_mfc_params(rt, mfccp); in add_mfc()
1091 rt->mfc_expire = 0; /* Don't clean this guy up */ in add_mfc()
1095 TAILQ_FOREACH_SAFE(rte, &rt->mfc_stall, rte_link, nrte) { in add_mfc()
1097 ip_mdq(rte->m, rte->ifp, rt, -1); in add_mfc()
1099 TAILQ_REMOVE(&rt->mfc_stall, rte, rte_link); in add_mfc()
1100 rt->mfc_nstall--; in add_mfc()
1111 LIST_FOREACH(rt, &V_mfchashtbl[hash], mfc_hash) { in add_mfc()
1112 if (in_hosteq(rt->mfc_origin, mfccp->mfcc_origin) && in add_mfc()
1113 in_hosteq(rt->mfc_mcastgrp, mfccp->mfcc_mcastgrp)) { in add_mfc()
1114 init_mfc_params(rt, mfccp); in add_mfc()
1115 if (rt->mfc_expire) in add_mfc()
1117 rt->mfc_expire = 0; in add_mfc()
1122 if (rt == NULL) { /* no upcall, so make a new entry */ in add_mfc()
1123 rt = (struct mfc *)malloc(sizeof(*rt), M_MRTABLE, M_NOWAIT); in add_mfc()
1124 if (rt == NULL) { in add_mfc()
1130 init_mfc_params(rt, mfccp); in add_mfc()
1131 TAILQ_INIT(&rt->mfc_stall); in add_mfc()
1132 rt->mfc_nstall = 0; in add_mfc()
1134 rt->mfc_expire = 0; in add_mfc()
1135 rt->mfc_bw_meter = NULL; in add_mfc()
1138 LIST_INSERT_HEAD(&V_mfchashtbl[hash], rt, mfc_hash); in add_mfc()
1156 struct mfc *rt; in del_mfc() local
1166 rt = mfc_find(&origin, &mcastgrp); in del_mfc()
1167 if (rt == NULL) { in del_mfc()
1175 free_bw_list(rt->mfc_bw_meter); in del_mfc()
1176 rt->mfc_bw_meter = NULL; in del_mfc()
1178 LIST_REMOVE(rt, mfc_hash); in del_mfc()
1179 free(rt, M_MRTABLE); in del_mfc()
1222 struct mfc *rt; in X_ip_mforward() local
1268 rt = mfc_find(&ip->ip_src, &ip->ip_dst); in X_ip_mforward()
1271 if (rt != NULL) { in X_ip_mforward()
1272 error = ip_mdq(m, ifp, rt, -1); in X_ip_mforward()
1317 LIST_FOREACH(rt, &V_mfchashtbl[hash], mfc_hash) { in X_ip_mforward()
1318 if (in_hosteq(ip->ip_src, rt->mfc_origin) && in X_ip_mforward()
1319 in_hosteq(ip->ip_dst, rt->mfc_mcastgrp) && in X_ip_mforward()
1320 !TAILQ_EMPTY(&rt->mfc_stall)) in X_ip_mforward()
1324 if (rt == NULL) { in X_ip_mforward()
1341 rt = (struct mfc *)malloc(sizeof(*rt), M_MRTABLE, M_NOWAIT); in X_ip_mforward()
1342 if (rt == NULL) in X_ip_mforward()
1367 free(rt, M_MRTABLE); in X_ip_mforward()
1377 rt->mfc_origin.s_addr = ip->ip_src.s_addr; in X_ip_mforward()
1378 rt->mfc_mcastgrp.s_addr = ip->ip_dst.s_addr; in X_ip_mforward()
1379 rt->mfc_expire = UPCALL_EXPIRE; in X_ip_mforward()
1382 rt->mfc_ttls[i] = 0; in X_ip_mforward()
1383 rt->mfc_flags[i] = 0; in X_ip_mforward()
1385 rt->mfc_parent = -1; in X_ip_mforward()
1388 rt->mfc_rp.s_addr = INADDR_ANY; in X_ip_mforward()
1389 rt->mfc_bw_meter = NULL; in X_ip_mforward()
1392 rt->mfc_pkt_cnt = 0; in X_ip_mforward()
1393 rt->mfc_byte_cnt = 0; in X_ip_mforward()
1394 rt->mfc_wrong_if = 0; in X_ip_mforward()
1395 timevalclear(&rt->mfc_last_assert); in X_ip_mforward()
1397 TAILQ_INIT(&rt->mfc_stall); in X_ip_mforward()
1398 rt->mfc_nstall = 0; in X_ip_mforward()
1401 LIST_INSERT_HEAD(&V_mfchashtbl[hash], rt, mfc_hash); in X_ip_mforward()
1402 TAILQ_INSERT_HEAD(&rt->mfc_stall, rte, rte_link); in X_ip_mforward()
1403 rt->mfc_nstall++; in X_ip_mforward()
1407 if (rt->mfc_nstall > MAX_UPQ) { in X_ip_mforward()
1416 TAILQ_INSERT_TAIL(&rt->mfc_stall, rte, rte_link); in X_ip_mforward()
1417 rt->mfc_nstall++; in X_ip_mforward()
1443 struct mfc *rt, *nrt; in expire_upcalls() local
1448 LIST_FOREACH_SAFE(rt, &V_mfchashtbl[i], mfc_hash, nrt) { in expire_upcalls()
1449 if (TAILQ_EMPTY(&rt->mfc_stall)) in expire_upcalls()
1452 if (rt->mfc_expire == 0 || --rt->mfc_expire > 0) in expire_upcalls()
1458 while (rt->mfc_bw_meter != NULL) { in expire_upcalls()
1459 struct bw_meter *x = rt->mfc_bw_meter; in expire_upcalls()
1461 rt->mfc_bw_meter = x->bm_mfc_next; in expire_upcalls()
1467 (u_long)ntohl(rt->mfc_origin.s_addr), in expire_upcalls()
1468 (u_long)ntohl(rt->mfc_mcastgrp.s_addr)); in expire_upcalls()
1470 expire_mfc(rt); in expire_upcalls()
1486 ip_mdq(struct mbuf *m, struct ifnet *ifp, struct mfc *rt, vifi_t xmt_vif) in ip_mdq() argument
1501 pim_register_send(ip, V_viftable + xmt_vif, m, rt); in ip_mdq()
1510 vifi = rt->mfc_parent; in ip_mdq()
1515 ++rt->mfc_wrong_if; in ip_mdq()
1537 if (rt->mfc_flags[vifi] & MRT_MFC_FLAGS_DISABLE_WRONGVIF) in ip_mdq()
1540 if (ratecheck(&rt->mfc_last_assert, &pim_assert_interval)) { in ip_mdq()
1578 rt->mfc_pkt_cnt++; in ip_mdq()
1579 rt->mfc_byte_cnt += plen; in ip_mdq()
1588 if ((rt->mfc_ttls[vifi] > 0) && (ip->ip_ttl > rt->mfc_ttls[vifi])) { in ip_mdq()
1592 pim_register_send(ip, V_viftable + vifi, m, rt); in ip_mdq()
1600 if (rt->mfc_bw_meter != NULL) { in ip_mdq()
1606 for (x = rt->mfc_bw_meter; x != NULL; x = x->bm_mfc_next) in ip_mdq()
2322 struct mfc *rt) in pim_register_send() argument
2331 in_nullhost(rt->mfc_rp)) in pim_register_send()
2348 if ((V_mrt_api_config & MRT_MFC_RP) && !in_nullhost(rt->mfc_rp)) { in pim_register_send()
2349 pim_register_send_rp(ip, vifp, mm, rt); in pim_register_send()
2351 pim_register_send_upcall(ip, vifp, mm, rt); in pim_register_send()
2414 struct mbuf *mb_copy, struct mfc *rt) in pim_register_send_upcall() argument
2466 struct mfc *rt) in pim_register_send_rp() argument
2472 vifi_t vifi = rt->mfc_parent; in pim_register_send_rp()
2504 ip_outer->ip_dst = rt->mfc_rp; in pim_register_send_rp()
2516 if (rt->mfc_flags[vifi] & MRT_MFC_FLAGS_BORDER_VIF & V_mrt_api_config) in pim_register_send_rp()
2776 struct mfc *rt; in sysctl_mfctable() local
2789 LIST_FOREACH(rt, &V_mfchashtbl[i], mfc_hash) { in sysctl_mfctable()
2790 error = SYSCTL_OUT(req, rt, sizeof(struct mfc)); in sysctl_mfctable()