Lines Matching defs:tll

106 #define	KLINCR(vn)	KINCR(tll, tll_kstats, vn)
107 #define KLDECR(vn) KDECR(tll, tll_kstats, vn)
447 tunll_t *tll;
454 tll = kmem_zalloc(sizeof (tunll_t), KM_SLEEP);
456 tll->tll_index = tunll_index++;
458 tll->tll_wq = WR(q);
459 tll->tll_zoneid = crgetzoneid(credp);
462 insque(&tll->tll_next, tunll_list.q_back);
463 q->q_ptr = WR(q)->q_ptr = tll;
465 tll->tll_style = PTS_PPPOE;
466 tll->tll_alen = sizeof (tll->tll_lcladdr.pta_pppoe);
468 tll->tll_ksp = kstat_setup((kstat_named_t *)&tll->tll_kstats,
469 tll_kstats_list, Dim(tll_kstats_list), "tll",
470 tll->tll_index);
488 (void) snprintf(tll->tll_name, sizeof (tll->tll_name),
489 PPP_TUN_NAME "%d", tll->tll_index);
491 (void) snprintf(tll->tll_name, sizeof (tll->tll_name),
492 "%s:tun%d", cp, tll->tll_index);
590 tunll_t *tll = (tunll_t *)arg;
599 if (tcl->tcl_data_tll == tll && tcl->tcl_rq != NULL) {
605 if (tcl->tcl_ctrl_tll == tll)
609 if (tcl->tcl_ctrl_tll == tll) {
610 send_control(tcl, tll, PTCA_UNPLUMB, tcl);
631 tunll_t *tll;
637 tll = qptr;
638 if (!(tll->tll_flags & TLLF_NOTLOWER)) {
643 vmem_walk(tcl_minor_arena, VMEM_ALLOC, tclvm_remove_tll, tll);
646 if ((tcl = tll->tll_defcl) != NULL)
647 send_control(NULL, tll, PTCA_UNPLUMB, tcl);
649 tll->tll_flags |= TLLF_CLOSING;
650 while (!(tll->tll_flags & TLLF_CLOSE_DONE)) {
651 qenable(tll->tll_wq);
652 qwait(tll->tll_wq);
654 tll->tll_error = 0;
655 while (!(tll->tll_flags & TLLF_SHUTDOWN_DONE)) {
656 if (!qwait_sig(tll->tll_wq))
662 tll->tll_wq = NULL;
663 remque(&tll->tll_next);
664 err = tll->tll_error;
665 if (tll->tll_ksp != NULL)
666 kstat_delete(tll->tll_ksp);
667 kmem_free(tll, sizeof (*tll));
679 tll = TO_TLL(tunll_list.q_forw);
680 while (tll != TO_TLL(&tunll_list)) {
681 if (tll->tll_defcl == tcl)
682 tll->tll_defcl = NULL;
683 if (tll->tll_lastcl == tcl)
684 tll->tll_lastcl = NULL;
685 tll = TO_TLL(tll->tll_next);
691 (tll = tcl->tcl_ctrl_tll) != NULL &&
692 tll->tll_defcl != NULL) {
693 send_control(tcl, tll, PTCA_DISCONNECT,
694 tll->tll_defcl);
698 if ((tll = tcl->tcl_data_tll) != NULL) {
701 if ((tll = tcl->tcl_ctrl_tll) != NULL) {
786 tunll_t *tll;
810 tll = tcl->tcl_data_tll;
854 tll = tcl->tcl_ctrl_tll;
859 send_control(tcl, tll, PTCA_BADCTRL, tcl);
865 if (tll == NULL || (lowerq = tll->tll_wq) == NULL) {
867 tunll_t *, tll, mblk_t *, mp);
868 send_control(tcl, tll, PTCA_UNPLUMB, tcl);
886 tunll_t *, tll, mblk_t *, mp);
900 if (tll->tll_alen != 0 &&
901 bcmp(&tcl->tcl_address, &tll->tll_lcladdr,
902 tll->tll_alen) == 0)
904 switch (tll->tll_style) {
931 edestp->type = tll->tll_sap;
955 if (bcmp(&ptc->ptc_address, &tll->tll_lcladdr, tll->tll_alen)
959 switch (tll->tll_style) {
981 edestp->type = tll->tll_sap;
1062 save_for_close(tunll_t *tll, mblk_t *mp)
1066 if ((onc = tll->tll_onclose) == NULL)
1067 tll->tll_onclose = mp;
1084 tunll_t *tll;
1086 tll = TO_TLL(tunll_list.q_forw);
1087 for (; tll != TO_TLL(&tunll_list); tll = TO_TLL(tll->tll_next))
1088 if (tll->tll_zoneid == zoneid &&
1089 strcmp(dname, tll->tll_name) == 0)
1090 return (tll);
1112 tunll_t *tll;
1123 tll = q->q_ptr;
1124 if (tll->tll_flags & TLLF_NOTLOWER) {
1125 tcl = (tuncl_t *)tll;
1126 tll = NULL;
1129 DTRACE_PROBE3(sppptun__ioctl, tuncl_t *, tcl, tunll_t *, tll,
1167 if (tll == NULL || mp->b_cont == NULL ||
1177 tll = tll_lookup_on_name(ptn->ptn_name, tll->tll_zoneid);
1178 if (tll != NULL) {
1182 tll = (tunll_t *)q->q_ptr;
1183 (void) strcpy(tll->tll_name, ptn->ptn_name);
1195 tll = tll_lookup_on_name(pti->pti_name,
1196 tcl == NULL ? tll->tll_zoneid : tcl->tcl_zoneid);
1197 if (tll == NULL) {
1206 pti->pti_muxid = tll->tll_muxid;
1207 pti->pti_style = tll->tll_style;
1211 tll->tll_muxid = pti->pti_muxid;
1212 tll->tll_style = pti->pti_style;
1213 switch (tll->tll_style) {
1215 tll->tll_alen = sizeof (tll->tll_lcladdr.pta_pppoe);
1222 save_for_close(tll, mptmp);
1229 save_for_close(tll, mptmp);
1232 tll->tll_style = PTS_NONE;
1233 tll->tll_alen = 0;
1245 zoneid = tcl == NULL ? tll->tll_zoneid : tcl->tcl_zoneid;
1248 tll = TO_TLL(tunll_list.q_forw);
1249 while (tll != TO_TLL(&tunll_list)) {
1250 if (tll->tll_zoneid == zoneid && --i < 0)
1252 tll = TO_TLL(tll->tll_next);
1254 if (tll != TO_TLL(&tunll_list)) {
1255 bcopy(tll->tll_name, ptn->ptn_name,
1265 if (tll == NULL || mp->b_cont == NULL) {
1270 pap = &tll->tll_lcladdr;
1271 len = tll->tll_alen;
1387 tll = tll_lookup_on_name(ptn->ptn_name, tcl->tcl_zoneid);
1388 if (tll == NULL) {
1392 if (tll->tll_style != tcl->tcl_style) {
1406 tcl->tcl_data_tll = tll;
1408 if (tll->tll_defcl != NULL && tll->tll_defcl != tcl) {
1412 tll->tll_defcl = tcl;
1417 tcl->tcl_ctrl_tll = tll;
1423 tcl->tcl_ctrl_tll = tll;
1444 tll = tcl->tcl_data_tll;
1446 tll = tcl->tcl_ctrl_tll;
1447 if (tll == NULL)
1450 bcopy(tll->tll_name, ptn->ptn_name,
1465 tll = tll_lookup_on_name(ptn->ptn_name, tcl->tcl_zoneid);
1466 if (tll == NULL || tll->tll_defcl != tcl) {
1470 tll->tll_defcl = NULL;
1475 if (tll == NULL || mp->b_cont == NULL ||
1481 tll->tll_sap = *(uint_t *)mp->b_cont->b_rptr;
1513 tunll_t *tll;
1566 tll = (tunll_t *)q->q_ptr;
1567 if (!(tll->tll_flags & TLLF_NOTLOWER)) {
1683 message_send(tunll_t *tll, mblk_t *mp)
1687 if (tll->tll_msg_pending) {
1689 mpp = &tll->tll_msg_deferred;
1695 tll->tll_msg_pending = 1;
1696 putnext(tll->tll_wq, mp);
1704 message_done(tunll_t *tll)
1708 ASSERT(tll->tll_msg_pending);
1709 tll->tll_msg_pending = 0;
1710 mp = tll->tll_msg_deferred;
1712 tll->tll_msg_deferred = mp->b_next;
1714 tll->tll_msg_pending = 1;
1715 putnext(tll->tll_wq, mp);
1725 tll_close_req(tunll_t *tll)
1729 if ((mb = tll->tll_onclose) == NULL)
1730 tll->tll_flags |= TLLF_SHUTDOWN_DONE;
1732 tll->tll_onclose = NULL;
1736 message_send(tll, mb);
1751 tunll_t *tll = arg;
1759 if ((tcl->tcl_data_tll == tll ||
1760 tcl->tcl_ctrl_tll == tll) &&
1790 tunll_t *tll = (tunll_t *)tcl;
1792 if ((tll->tll_flags & (TLLF_CLOSING|TLLF_CLOSE_DONE)) ==
1794 tll->tll_error = tll_close_req(tll);
1795 tll->tll_flags |= TLLF_CLOSE_DONE;
1803 tll);
1902 tunll_t *tll = q->q_ptr;
1916 message_done(tll);
1919 message_done(tll);
1920 tll->tll_error = err;
1921 tll->tll_flags |= TLLF_SHUTDOWN_DONE;
1924 message_done(tll);
1929 message_done(tll);
1930 tll->tll_error = err;
1936 message_done(tll);
1940 message_done(tll);
1951 message_done(tll);
1954 tll->tll_flags |= TLLF_SHUTDOWN_DONE;
1957 message_done(tll);
1968 tunll_t *tll;
2005 ((!poedat->isdata && tcl->tcl_ctrl_tll == poedat->tll) ||
2006 (poedat->isdata && tcl->tcl_data_tll == poedat->tll)) &&
2069 tunll_t *tll;
2083 tll = q->q_ptr;
2084 ASSERT(!(tll->tll_flags & TLLF_NOTLOWER));
2087 switch (tll->tll_style) {
2108 tcl = tll->tll_defcl;
2138 * right one, then try the tll cache. If
2145 (!isdata && tcl->tcl_ctrl_tll != tll) ||
2146 (isdata && tcl->tcl_data_tll != tll) ||
2150 tcl = tll->tll_lastcl;
2152 (!isdata && tcl->tcl_ctrl_tll != tll) ||
2153 (isdata && tcl->tcl_data_tll != tll) ||
2166 poedat.tll = tll;
2174 tll->tll_lastcl = tcl;
2202 if (tcl->tcl_data_tll == tll && isdata) {
2226 if (isdata || tcl->tcl_ctrl_tll != tll ||
2227 (mnew = make_control(tcl, tll, PTCA_CONTROL, tcl)) ==
2263 tunll_t *tll;
2266 tll = q->q_ptr;
2267 ASSERT(!(tll->tll_flags & TLLF_NOTLOWER));
2282 switch (tll->tll_style) {
2318 tll->tll_lcladdr.pta_pppoe.ptma_mac);