Lines Matching refs:ipst

335 	ip_stack_t	*ipst = connp->conn_netstack->netstack_ip;
337 mutex_enter(&ipst->ips_ip_g_mrouter_mutex);
338 if (cmd != MRT_INIT && connp != ipst->ips_ip_g_mrouter) {
339 mutex_exit(&ipst->ips_ip_g_mrouter_mutex);
342 mutex_exit(&ipst->ips_ip_g_mrouter_mutex);
370 if (is_mrouter_off(ipst))
375 case MRT_INIT: return (ip_mrouter_init(connp, data, datalen, ipst));
376 case MRT_DONE: return (ip_mrouter_done(ipst));
377 case MRT_ADD_VIF: return (add_vif((struct vifctl *)data, connp, ipst));
378 case MRT_DEL_VIF: return (del_vif((vifi_t *)data, ipst));
379 case MRT_ADD_MFC: return (add_mfc((struct mfcctl *)data, ipst));
380 case MRT_DEL_MFC: return (del_mfc((struct mfcctl *)data, ipst));
381 case MRT_ASSERT: return (set_assert((int *)data, ipst));
392 ip_stack_t *ipst = connp->conn_netstack->netstack_ip;
394 if (connp != ipst->ips_ip_g_mrouter)
399 case MRT_ASSERT: return (get_assert((uchar_t *)data, ipst));
416 ip_stack_t *ipst = connp->conn_netstack->netstack_ip;
423 return (get_vif_cnt((struct sioc_vif_req *)mp1->b_rptr, ipst));
425 return (get_sg_cnt((struct sioc_sg_req *)mp1->b_rptr, ipst));
427 return (get_lsg_cnt((struct sioc_lsg_req *)mp1->b_rptr, ipst));
437 get_sg_cnt(struct sioc_sg_req *req, ip_stack_t *ipst)
442 mfcbp = &ipst->ips_mfcs[MFCHASH(req->src.s_addr, req->grp.s_addr)];
465 get_lsg_cnt(struct sioc_lsg_req *req, ip_stack_t *ipst)
475 get_vif_cnt(struct sioc_vif_req *req, ip_stack_t *ipst)
479 if (vifi >= ipst->ips_numvifs)
485 req->icount = ipst->ips_vifs[vifi].v_pkt_in;
486 req->ocount = ipst->ips_vifs[vifi].v_pkt_out;
487 req->ibytes = ipst->ips_vifs[vifi].v_bytes_in;
488 req->obytes = ipst->ips_vifs[vifi].v_bytes_out;
507 set_assert(int *i, ip_stack_t *ipst)
512 ipst->ips_pim_assert = *i;
521 get_assert(uchar_t *data, ip_stack_t *ipst)
525 *i = ipst->ips_pim_assert;
534 ip_mrouter_init(conn_t *connp, uchar_t *data, int datalen, ip_stack_t *ipst)
545 mutex_enter(&ipst->ips_ip_g_mrouter_mutex);
546 if (ipst->ips_ip_g_mrouter != NULL) {
547 mutex_exit(&ipst->ips_ip_g_mrouter_mutex);
556 mutex_exit(&ipst->ips_ip_g_mrouter_mutex);
560 ipst->ips_ip_g_mrouter = connp;
563 if (!WE_ARE_FORWARDING(ipst)) {
564 if (ipst->ips_ip_mrtdebug > 1) {
568 ipst->ips_saved_ip_forwarding = ipst->ips_ip_forwarding;
569 ipst->ips_ip_forwarding = IP_FORWARD_ALWAYS;
572 mutex_exit(&ipst->ips_ip_g_mrouter_mutex);
577 ip_mrouter_stack_init(ip_stack_t *ipst)
579 mutex_init(&ipst->ips_ip_g_mrouter_mutex, NULL, MUTEX_DEFAULT, NULL);
581 ipst->ips_vifs = kmem_zalloc(sizeof (struct vif) * (MAXVIFS+1),
583 ipst->ips_mrtstat = kmem_zalloc(sizeof (struct mrtstat), KM_SLEEP);
589 ipst->ips_mfcs = kmem_zalloc(sizeof (struct mfcb) * MFCTBLSIZ,
595 ipst->ips_tbfs = kmem_zalloc(sizeof (struct tbf) * MAXVIFS, KM_SLEEP);
597 mutex_init(&ipst->ips_last_encap_lock, NULL, MUTEX_DEFAULT, NULL);
599 ipst->ips_mrtstat->mrts_vifctlSize = sizeof (struct vifctl);
600 ipst->ips_mrtstat->mrts_mfcctlSize = sizeof (struct mfcctl);
608 ip_mrouter_done(ip_stack_t *ipst)
615 mutex_enter(&ipst->ips_ip_g_mrouter_mutex);
616 if (ipst->ips_ip_g_mrouter == NULL) {
617 mutex_exit(&ipst->ips_ip_g_mrouter_mutex);
621 mrouter = ipst->ips_ip_g_mrouter;
623 if (ipst->ips_saved_ip_forwarding != -1) {
624 if (ipst->ips_ip_mrtdebug > 1) {
628 ipst->ips_ip_forwarding = ipst->ips_saved_ip_forwarding;
629 ipst->ips_saved_ip_forwarding = -1;
634 * No need to get ipst->ips_last_encap_lock since we are running as
637 mutex_enter(&ipst->ips_last_encap_lock);
638 ipst->ips_last_encap_src = 0;
639 ipst->ips_last_encap_vif = NULL;
640 mutex_exit(&ipst->ips_last_encap_lock);
643 mutex_exit(&ipst->ips_ip_g_mrouter_mutex);
650 struct vif *vifp = ipst->ips_vifs + vifi;
690 mutex_enter(&ipst->ips_numvifs_mutex);
691 ipst->ips_numvifs = 0;
692 ipst->ips_pim_assert = 0;
693 ipst->ips_reg_vif_num = ALL_VIFS;
694 mutex_exit(&ipst->ips_numvifs_mutex);
702 mutex_enter(&ipst->ips_mfcs[i].mfcb_lock);
703 ipst->ips_mfcs[i].mfcb_refcnt++;
704 ipst->ips_mfcs[i].mfcb_marks |= MFCB_MARK_CONDEMNED;
705 mutex_exit(&ipst->ips_mfcs[i].mfcb_lock);
706 mfc_rt = ipst->ips_mfcs[i].mfcb_mfc;
739 MFCB_REFRELE(&ipst->ips_mfcs[i]);
742 mutex_enter(&ipst->ips_ip_g_mrouter_mutex);
743 ipst->ips_ip_g_mrouter = NULL;
744 mutex_exit(&ipst->ips_ip_g_mrouter_mutex);
749 ip_mrouter_stack_destroy(ip_stack_t *ipst)
756 mfcbp = &ipst->ips_mfcs[i];
767 kmem_free(ipst->ips_vifs, sizeof (struct vif) * (MAXVIFS+1));
768 ipst->ips_vifs = NULL;
769 kmem_free(ipst->ips_mrtstat, sizeof (struct mrtstat));
770 ipst->ips_mrtstat = NULL;
771 kmem_free(ipst->ips_mfcs, sizeof (struct mfcb) * MFCTBLSIZ);
772 ipst->ips_mfcs = NULL;
773 kmem_free(ipst->ips_tbfs, sizeof (struct tbf) * MAXVIFS);
774 ipst->ips_tbfs = NULL;
776 mutex_destroy(&ipst->ips_last_encap_lock);
777 mutex_destroy(&ipst->ips_ip_g_mrouter_mutex);
781 is_mrouter_off(ip_stack_t *ipst)
785 mutex_enter(&ipst->ips_ip_g_mrouter_mutex);
786 if (ipst->ips_ip_g_mrouter == NULL) {
787 mutex_exit(&ipst->ips_ip_g_mrouter_mutex);
791 mrouter = ipst->ips_ip_g_mrouter;
793 mutex_exit(&ipst->ips_ip_g_mrouter_mutex);
796 mutex_exit(&ipst->ips_ip_g_mrouter_mutex);
835 add_vif(struct vifctl *vifcp, conn_t *connp, ip_stack_t *ipst)
837 struct vif *vifp = ipst->ips_vifs + vifcp->vifc_vifi;
840 struct tbf *v_tbf = ipst->ips_tbfs + vifcp->vifc_vifi;
841 conn_t *mrouter = ipst->ips_ip_g_mrouter;
850 if (is_mrouter_off(ipst))
883 IPCL_ZONEID(connp), ipst);
889 if (ipst->ips_ip_mrtdebug > 1) {
902 mutex_enter(&ipst->ips_last_encap_lock);
903 ipst->ips_last_encap_src = 0;
904 ipst->ips_last_encap_vif = NULL;
905 mutex_exit(&ipst->ips_last_encap_lock);
926 mutex_enter(&ipst->ips_numvifs_mutex);
927 if (ipst->ips_reg_vif_num == ALL_VIFS) {
928 ipst->ips_reg_vif_num = vifcp->vifc_vifi;
929 mutex_exit(&ipst->ips_numvifs_mutex);
931 mutex_exit(&ipst->ips_numvifs_mutex);
943 mutex_enter(&ipst->ips_numvifs_mutex);
944 ipst->ips_reg_vif_num = ALL_VIFS;
945 mutex_exit(&ipst->ips_numvifs_mutex);
974 if (ilm == NULL || is_mrouter_off(ipst)) {
981 mutex_enter(&ipst->ips_numvifs_mutex);
982 ipst->ips_reg_vif_num = ALL_VIFS;
983 mutex_exit(&ipst->ips_numvifs_mutex);
1015 mutex_enter(&ipst->ips_numvifs_mutex);
1016 if (ipst->ips_numvifs <= vifcp->vifc_vifi)
1017 ipst->ips_numvifs = vifcp->vifc_vifi + 1;
1018 mutex_exit(&ipst->ips_numvifs_mutex);
1020 if (ipst->ips_ip_mrtdebug > 1) {
1043 ip_stack_t *ipst = vifp->v_ipif->ipif_ill->ill_ipst;
1044 conn_t *mrouter = ipst->ips_ip_g_mrouter;
1049 if (ipst->ips_ip_mrtdebug > 1) {
1076 mutex_enter(&ipst->ips_last_encap_lock);
1077 if (vifp == ipst->ips_last_encap_vif) {
1078 ipst->ips_last_encap_vif = NULL;
1079 ipst->ips_last_encap_src = 0;
1081 mutex_exit(&ipst->ips_last_encap_lock);
1088 mutex_enter(&ipst->ips_numvifs_mutex);
1089 for (vifi = ipst->ips_numvifs; vifi != 0; vifi--) /* vifi is unsigned */
1090 if (ipst->ips_vifs[vifi - 1].v_lcl_addr.s_addr != 0)
1092 ipst->ips_numvifs = vifi;
1093 mutex_exit(&ipst->ips_numvifs_mutex);
1099 del_vif(vifi_t *vifip, ip_stack_t *ipst)
1101 struct vif *vifp = ipst->ips_vifs + *vifip;
1103 if (*vifip >= ipst->ips_numvifs)
1144 mutex_enter(&ipst->ips_numvifs_mutex);
1145 ipst->ips_reg_vif_num = ALL_VIFS;
1146 mutex_exit(&ipst->ips_numvifs_mutex);
1160 add_mfc(struct mfcctl *mfccp, ip_stack_t *ipst)
1167 conn_t *mrouter = ipst->ips_ip_g_mrouter;
1185 (ipst->ips_vifs[mfccp->mfcc_parent].v_ipif == NULL)) {
1191 if (is_mrouter_off(ipst)) {
1195 mfcbp = &ipst->ips_mfcs[MFCHASH(mfccp->mfcc_origin.s_addr,
1203 if (ipst->ips_ip_mrtdebug > 1) {
1213 mutex_enter(&ipst->ips_numvifs_mutex);
1214 for (i = 0; i < (int)ipst->ips_numvifs; i++)
1216 mutex_exit(&ipst->ips_numvifs_mutex);
1240 if (ipst->ips_ip_mrtdebug > 1) {
1248 fill_route(rt, mfccp, ipst);
1301 if (ipst->ips_ip_mrtdebug > 1) {
1308 if (is_mrouter_off(ipst)) {
1322 fill_route(rt, mfccp, ipst);
1341 fill_route(rt, mfccp, ipst);
1359 fill_route(struct mfc *rt, struct mfcctl *mfccp, ip_stack_t *ipst)
1366 mutex_enter(&ipst->ips_numvifs_mutex);
1367 for (i = 0; i < (int)ipst->ips_numvifs; i++) {
1370 mutex_exit(&ipst->ips_numvifs_mutex);
1434 del_mfc(struct mfcctl *mfccp, ip_stack_t *ipst)
1440 conn_t *mrouter = ipst->ips_ip_g_mrouter;
1446 if (ipst->ips_ip_mrtdebug > 1) {
1453 MFCB_REFHOLD(&ipst->ips_mfcs[hash]);
1456 for (rt = ipst->ips_mfcs[hash].mfcb_mfc; rt; rt = rt->mfc_next) {
1471 MFCB_REFRELE(&ipst->ips_mfcs[hash]);
1479 ipst->ips_mfcs[hash].mfcb_marks |= MFCB_MARK_CONDEMNED;
1502 MFCB_REFRELE(&ipst->ips_mfcs[hash]);
1538 ip_stack_t *ipst = ill->ill_ipst;
1539 conn_t *mrouter = ipst->ips_ip_g_mrouter;
1544 if (ipst->ips_ip_mrtdebug > 1) {
1563 if (ipst->ips_ip_mrtdebug > 1) {
1580 if (ipst->ips_ip_mrtdebug > 1) {
1598 if (ipst->ips_ip_mrtdebug > 1) {
1618 ipst->ips_mrtstat->mrts_fwd_in++;
1630 if (is_mrouter_off(ipst))
1633 mfcbp = &ipst->ips_mfcs[MFCHASH(src, dst)];
1640 ipst->ips_mrtstat->mrts_mfc_hits++;
1642 ASSERT(ipst->ips_reg_vif_num != ALL_VIFS);
1644 ipst->ips_vifs[ipst->ips_reg_vif_num].
1671 ipst->ips_mrtstat->mrts_mfc_misses++;
1673 if (ipst->ips_ip_mrtdebug > 1) {
1677 (int)ipst->ips_mrtstat->mrts_mfc_misses);
1688 mutex_enter(&(ipst->ips_mfcs[hash].mfcb_lock));
1693 if (is_mrouter_off(ipst)) {
1700 for (mfc_rt = ipst->ips_mfcs[hash].mfcb_mfc; mfc_rt;
1703 if (ipst->ips_ip_mrtdebug > 1) {
1724 ipst->ips_mrtstat->mrts_fwd_drop++;
1734 ipst->ips_mrtstat->mrts_fwd_drop++;
1745 ipst->ips_mrtstat->mrts_fwd_drop++;
1754 ipst->ips_mrtstat->mrts_fwd_drop++;
1761 ASSERT(ipst->ips_reg_vif_num != ALL_VIFS);
1763 ipst->ips_vifs[ipst->ips_reg_vif_num].
1778 if (ipst->ips_ip_mrtdebug > 1) {
1783 ipst->ips_mrtstat->mrts_upq_ovflw++;
1798 mutex_enter(&ipst->ips_numvifs_mutex);
1799 for (i = 0; i < (int)ipst->ips_numvifs; i++)
1801 mutex_exit(&ipst->ips_numvifs_mutex);
1805 if (ipst->ips_ip_mrtdebug > 1) {
1813 mfc_rt->mfc_next = ipst->ips_mfcs[hash].mfcb_mfc;
1814 ipst->ips_mfcs[hash].mfcb_mfc = mfc_rt;
1842 mutex_enter(&ipst->ips_numvifs_mutex);
1844 im->im_vif = (uchar_t)ipst->ips_reg_vif_num;
1845 mutex_exit(&ipst->ips_numvifs_mutex);
1851 vifi < ipst->ips_numvifs;
1853 if (ipst->ips_vifs[vifi].v_ipif == NULL)
1855 if (ipst->ips_vifs[vifi].
1861 mutex_exit(&ipst->ips_numvifs_mutex);
1862 ASSERT(vifi < ipst->ips_numvifs);
1865 ipst->ips_mrtstat->mrts_upcalls++;
1870 mutex_exit(&(ipst->ips_mfcs[hash].mfcb_lock));
1878 mutex_exit(&(ipst->ips_mfcs[hash].mfcb_lock));
1891 mutex_exit(&(ipst->ips_mfcs[hash].mfcb_lock));
1918 ip_stack_t *ipst;
1925 ipst = mfc_rt->mfc_rte->ill->ill_ipst;
1926 mrouter = ipst->ips_ip_g_mrouter;
1929 if (ipst->ips_ip_mrtdebug > 1) {
1935 MFCB_REFHOLD(&ipst->ips_mfcs[hash]);
1943 ipst->ips_mrtstat->mrts_cache_cleanups++;
1947 for (prev_mfc = mfc0 = ipst->ips_mfcs[hash].mfcb_mfc; mfc0;
1959 ipst->ips_mfcs[hash].mfcb_marks |= MFCB_MARK_CONDEMNED;
1968 MFCB_REFRELE(&ipst->ips_mfcs[hash]);
1983 ip_stack_t *ipst = ill->ill_ipst;
1984 conn_t *mrouter = ipst->ips_ip_g_mrouter;
1987 if (ipst->ips_ip_mrtdebug > 1) {
2017 if (ipst->ips_ip_mrtdebug > 1) {
2024 if (!lock_good_vif(&ipst->ips_vifs[vifi]))
2032 ASSERT(ipst->ips_vifs[vifi].v_ipif != NULL);
2034 if (vifi >= ipst->ips_numvifs) {
2037 (int)vifi, (int)ipst->ips_numvifs, ill->ill_name,
2038 ipst->ips_vifs[vifi].v_ipif->ipif_ill->ill_name);
2039 unlock_good_vif(&ipst->ips_vifs[vifi]);
2046 if ((ipst->ips_vifs[vifi].v_ipif->ipif_ill != ill) ||
2047 (ipst->ips_vifs[vifi].v_rmt_addr.s_addr != tunnel_src)) {
2051 (int)vifi, (int)ipst->ips_numvifs, ill->ill_name,
2052 ipst->ips_vifs[vifi].v_ipif->ipif_ill->ill_name));
2053 if (ipst->ips_ip_mrtdebug > 1) {
2058 ipst->ips_vifs[vifi].v_ipif->ipif_ill->ill_name);
2060 ipst->ips_mrtstat->mrts_wrong_if++;
2071 if (ipst->ips_pim_assert && rt->mfc_ttls[vifi] > 0 &&
2073 !(ipst->ips_vifs[vifi].v_flags & VIFF_TUNNEL)) {
2080 ipst->ips_mrtstat->mrts_fwd_drop++;
2083 unlock_good_vif(&ipst->ips_vifs[vifi]);
2101 unlock_good_vif(&ipst->ips_vifs[vifi]);
2110 if (ipha->ipha_src == ipst->ips_vifs[vifi].v_lcl_addr.s_addr) {
2111 ipst->ips_vifs[vifi].v_pkt_out++;
2112 ipst->ips_vifs[vifi].v_bytes_out += plen;
2114 ipst->ips_vifs[vifi].v_pkt_in++;
2115 ipst->ips_vifs[vifi].v_bytes_in += plen;
2121 unlock_good_vif(&ipst->ips_vifs[vifi]);
2130 mutex_enter(&ipst->ips_numvifs_mutex);
2131 num_of_vifs = ipst->ips_numvifs;
2132 mutex_exit(&ipst->ips_numvifs_mutex);
2133 for (vifp = ipst->ips_vifs, vifi = 0;
2148 ipst->ips_mrtstat->mrts_fwd_out++;
2167 ip_stack_t *ipst = vifp->v_ipif->ipif_ill->ill_ipst;
2168 conn_t *mrouter = ipst->ips_ip_g_mrouter;
2173 ipst->ips_mrtstat->mrts_fwd_drop++;
2180 if (ipst->ips_ip_mrtdebug > 1) {
2202 ip_stack_t *ipst = ill->ill_ipst;
2203 conn_t *mrouter = ipst->ips_ip_g_mrouter;
2206 if (ipst->ips_ip_mrtdebug > 1) {
2219 ++ipst->ips_mrtstat->mrts_pim_nomemory;
2220 if (ipst->ips_ip_mrtdebug > 3) {
2236 ++ipst->ips_mrtstat->mrts_pim_nomemory;
2237 if (ipst->ips_ip_mrtdebug > 3) {
2270 ++ipst->ips_mrtstat->mrts_upcalls;
2273 ++ipst->ips_mrtstat->mrts_pim_regsend_drops;
2274 if (ipst->ips_ip_mrtdebug > 3) {
2337 ip_stack_t *ipst = ill->ill_ipst;
2338 conn_t *mrouter = ipst->ips_ip_g_mrouter;
2344 ++ipst->ips_mrtstat->mrts_pim_nomemory;
2360 ++ipst->ips_mrtstat->mrts_pim_malformed;
2361 if (ipst->ips_ip_mrtdebug > 1) {
2380 ++ipst->ips_mrtstat->mrts_pim_badversion;
2381 if (ipst->ips_ip_mrtdebug > 1) {
2395 ++ipst->ips_mrtstat->mrts_pim_rcv_badcsum;
2396 if (ipst->ips_ip_mrtdebug > 1) {
2416 ++ipst->ips_mrtstat->mrts_pim_badregisters;
2417 if (ipst->ips_ip_mrtdebug > 1) {
2426 if (ipst->ips_ip_mrtdebug > 1) {
2439 ipst->ips_reg_vif_num != ALL_VIFS) {
2445 ++ipst->ips_mrtstat->mrts_pim_nomemory;
2487 ip_stack_t *ipst = ill->ill_ipst;
2488 conn_t *mrouter = ipst->ips_ip_g_mrouter;
2490 ASSERT(ipst->ips_reg_vif_num <= ipst->ips_numvifs);
2492 if (ipst->ips_ip_mrtdebug > 3) {
2505 ++ipst->ips_mrtstat->mrts_pim_regforwards;
2509 ira->ira_tsl, MATCH_IRE_SECATTR, IRR_ALLOCATE, 0, ipst,
2541 ip_stack_t *ipst = vifp->v_ipif->ipif_ill->ill_ipst;
2542 conn_t *mrouter = ipst->ips_ip_g_mrouter;
2544 if (ipst->ips_ip_mrtdebug > 1) {
2547 (ptrdiff_t)(vifp - ipst->ips_vifs));
2586 if (ipst->ips_ip_mrtdebug > 1) {
2616 ip_stack_t *ipst = ill->ill_ipst;
2617 conn_t *mrouter = ipst->ips_ip_g_mrouter;
2624 ipst->ips_mrtstat->mrts_bad_tunnel++;
2636 ipst->ips_mrtstat->mrts_bad_tunnel++;
2653 ipst->ips_mrtstat->mrts_bad_tunnel++;
2661 mutex_enter(&ipst->ips_last_encap_lock);
2662 if (src != ipst->ips_last_encap_src) {
2665 vifp = ipst->ips_vifs;
2666 vife = vifp + ipst->ips_numvifs;
2667 ipst->ips_last_encap_src = src;
2668 ipst->ips_last_encap_vif = 0;
2674 ipst->ips_last_encap_vif = vifp;
2675 if (ipst->ips_ip_mrtdebug > 1) {
2680 (ptrdiff_t)(vifp - ipst->ips_vifs),
2689 if ((vifp = ipst->ips_last_encap_vif) == 0) {
2690 mutex_exit(&ipst->ips_last_encap_lock);
2691 ipst->ips_mrtstat->mrts_bad_tunnel++;
2696 (ptrdiff_t)(vifp - ipst->ips_vifs), ntohl(src)));
2699 mutex_exit(&ipst->ips_last_encap_lock);
2720 ipst->ips_ipcl_proto_fanout_v4[IPPROTO_RSVP].connf_head != NULL) {
2723 IRR_ALLOCATE, 0, ipst, NULL, NULL, NULL);
2751 ip_stack_t *ipst = ipif->ipif_ill->ill_ipst;
2755 mutex_enter(&ipst->ips_numvifs_mutex);
2756 num_of_vifs = ipst->ips_numvifs;
2757 mutex_exit(&ipst->ips_numvifs_mutex);
2761 if (ipst->ips_vifs[tmp_vifi].v_ipif == ipif) {
2762 (void) del_vif(&tmp_vifi, ipst);
2774 ip_stack_t *ipst = ill->ill_ipst;
2775 conn_t *mrouter = ipst->ips_ip_g_mrouter;
2779 MFCB_REFHOLD(&ipst->ips_mfcs[i]);
2780 if ((rt = ipst->ips_mfcs[i].mfcb_mfc) != NULL) {
2781 if (ipst->ips_ip_mrtdebug > 1) {
2802 if (ipst->ips_ip_mrtdebug > 1) {
2818 MFCB_REFRELE(&ipst->ips_mfcs[i]);
2833 ip_stack_t *ipst = ill->ill_ipst;
2834 conn_t *mrouter = ipst->ips_ip_g_mrouter;
2838 ipst->ips_mrtstat->mrts_pkt2large++;
2844 if (ipst->ips_ip_mrtdebug > 1) {
2847 (ptrdiff_t)(vifp - ipst->ips_vifs), t->tbf_q_len,
2859 if (ipst->ips_ip_mrtdebug > 1) {
2862 (ptrdiff_t)(vifp - ipst->ips_vifs), t->tbf_n_tok, p_len,
2897 (ptrdiff_t)(vifp - ipst->ips_vifs),
2911 ipst->ips_mrtstat->mrts_q_overflow++;
2937 ip_stack_t *ipst = vifp->v_ipif->ipif_ill->ill_ipst;
2938 conn_t *mrouter = ipst->ips_ip_g_mrouter;
2940 if (ipst->ips_ip_mrtdebug > 1) {
2942 "tbf_queue: vif %ld", (ptrdiff_t)(vifp - ipst->ips_vifs));
2973 ip_stack_t *ipst = vifp->v_ipif->ipif_ill->ill_ipst;
2974 conn_t *mrouter = ipst->ips_ip_g_mrouter;
2976 if (ipst->ips_ip_mrtdebug > 1) {
2979 (ptrdiff_t)(vifp - ipst->ips_vifs), t->tbf_q_len);
3019 ip_stack_t *ipst = vifp->v_ipif->ipif_ill->ill_ipst;
3020 conn_t *mrouter = ipst->ips_ip_g_mrouter;
3034 if (ipst->ips_ip_mrtdebug > 1) {
3037 (ptrdiff_t)(vifp - ipst->ips_vifs), vifp->v_timeout_id);
3055 ip_stack_t *ipst = ill->ill_ipst;
3056 conn_t *mrouter = ipst->ips_ip_g_mrouter;
3058 if (ipst->ips_ip_mrtdebug > 1) {
3061 (ptrdiff_t)(vifp - ipst->ips_vifs), ntohl(ipha->ipha_dst));
3086 ipst->ips_mrtstat->mrts_drop_sel++;
3101 ip_stack_t *ipst = ill->ill_ipst;
3102 conn_t *mrouter = ipst->ips_ip_g_mrouter;
3110 if (ipst->ips_ip_mrtdebug > 1) {
3113 (ptrdiff_t)(vifp - ipst->ips_vifs));
3118 ixas.ixa_ipst = ipst;
3158 if (ipst->ips_ip_mrtdebug > 1) {
3161 (ptrdiff_t)(vifp - ipst->ips_vifs), ntohl(dst));
3205 ip_stack_t *ipst = vifp->v_ipif->ipif_ill->ill_ipst;
3206 conn_t *mrouter = ipst->ips_ip_g_mrouter;
3229 if (ipst->ips_ip_mrtdebug > 1) {
3232 tm, t->tbf_n_tok, (ptrdiff_t)(vifp - ipst->ips_vifs));
3247 ip_stack_t *ipst = vifp->v_ipif->ipif_ill->ill_ipst;
3248 conn_t *mrouter = ipst->ips_ip_g_mrouter;
3279 if (ipst->ips_ip_mrtdebug > 1) {
3299 ip_mroute_stats(mblk_t *mp, ip_stack_t *ipst)
3301 ipst->ips_mrtstat->mrts_vifctlSize = sizeof (struct vifctl);
3302 ipst->ips_mrtstat->mrts_mfcctlSize = sizeof (struct mfcctl);
3303 if (!snmp_append_data(mp, (char *)ipst->ips_mrtstat,
3316 ip_mroute_vif(mblk_t *mp, ip_stack_t *ipst)
3321 mutex_enter(&ipst->ips_numvifs_mutex);
3322 for (vifi = 0; vifi < ipst->ips_numvifs; vifi++) {
3323 if (ipst->ips_vifs[vifi].v_lcl_addr.s_addr == 0)
3329 vi.vifc_flags = ipst->ips_vifs[vifi].v_flags;
3330 vi.vifc_threshold = ipst->ips_vifs[vifi].v_threshold;
3331 vi.vifc_rate_limit = ipst->ips_vifs[vifi].v_rate_limit;
3332 vi.vifc_lcl_addr = ipst->ips_vifs[vifi].v_lcl_addr;
3333 vi.vifc_rmt_addr = ipst->ips_vifs[vifi].v_rmt_addr;
3334 vi.vifc_pkt_in = ipst->ips_vifs[vifi].v_pkt_in;
3335 vi.vifc_pkt_out = ipst->ips_vifs[vifi].v_pkt_out;
3340 mutex_exit(&ipst->ips_numvifs_mutex);
3344 mutex_exit(&ipst->ips_numvifs_mutex);
3352 ip_mroute_mrt(mblk_t *mp, ip_stack_t *ipst)
3361 if (is_mrouter_off(ipst))
3366 MFCB_REFHOLD(&ipst->ips_mfcs[i]);
3367 for (rt = ipst->ips_mfcs[i].mfcb_mfc; rt; rt = rt->mfc_next) {
3378 mutex_enter(&ipst->ips_numvifs_mutex);
3379 for (j = 0; j < (int)ipst->ips_numvifs; j++)
3381 for (j = (int)ipst->ips_numvifs; j < MAXVIFS; j++)
3383 mutex_exit(&ipst->ips_numvifs_mutex);
3388 MFCB_REFRELE(&ipst->ips_mfcs[i]);
3394 MFCB_REFRELE(&ipst->ips_mfcs[i]);