Lines Matching refs:linkp
315 linkattr_destroy(dlmgmt_link_t *linkp) in linkattr_destroy() argument
319 for (attrp = linkp->ll_head; attrp != NULL; attrp = next) { in linkattr_destroy()
355 link_destroy(dlmgmt_link_t *linkp) in link_destroy() argument
357 linkattr_destroy(linkp); in link_destroy()
358 free(linkp); in link_destroy()
367 link_activate(dlmgmt_link_t *linkp) in link_activate() argument
372 if (zone_check_datalink(&zoneid, linkp->ll_linkid) == 0) { in link_activate()
377 if (zoneid != linkp->ll_zoneid) { in link_activate()
378 if (link_by_name(linkp->ll_link, zoneid) != NULL) { in link_activate()
383 if (avl_find(&dlmgmt_name_avl, linkp, NULL) != NULL) in link_activate()
384 avl_remove(&dlmgmt_name_avl, linkp); in link_activate()
386 linkp->ll_zoneid = zoneid; in link_activate()
387 avl_add(&dlmgmt_name_avl, linkp); in link_activate()
388 avl_add(&dlmgmt_loan_avl, linkp); in link_activate()
389 linkp->ll_onloan = B_TRUE; in link_activate()
391 } else if (linkp->ll_zoneid != GLOBAL_ZONEID) { in link_activate()
392 err = zone_add_datalink(linkp->ll_zoneid, linkp->ll_linkid); in link_activate()
396 linkp->ll_flags |= DLMGMT_ACTIVE; in link_activate()
406 link_is_visible(dlmgmt_link_t *linkp, zoneid_t zoneid) in link_is_visible() argument
408 return (linkp->ll_zoneid == zoneid || in link_is_visible()
409 (zoneid == GLOBAL_ZONEID && linkp->ll_onloan)); in link_is_visible()
415 dlmgmt_link_t link, *linkp; in link_by_id() local
418 if ((linkp = avl_find(&dlmgmt_id_avl, &link, NULL)) == NULL) in link_by_id()
420 if (zoneid != GLOBAL_ZONEID && linkp->ll_zoneid != zoneid) in link_by_id()
422 return (linkp); in link_by_id()
428 dlmgmt_link_t link, *linkp; in link_by_name() local
432 linkp = avl_find(&dlmgmt_name_avl, &link, NULL); in link_by_name()
433 if (linkp == NULL && zoneid == GLOBAL_ZONEID) { in link_by_name()
435 linkp = avl_find(&dlmgmt_loan_avl, &link, NULL); in link_by_name()
437 return (linkp); in link_by_name()
444 dlmgmt_link_t *linkp = NULL; in dlmgmt_create_common() local
453 if ((linkp = calloc(1, sizeof (dlmgmt_link_t))) == NULL) { in dlmgmt_create_common()
458 (void) strlcpy(linkp->ll_link, name, MAXLINKNAMELEN); in dlmgmt_create_common()
459 linkp->ll_class = class; in dlmgmt_create_common()
460 linkp->ll_media = media; in dlmgmt_create_common()
461 linkp->ll_linkid = dlmgmt_nextlinkid; in dlmgmt_create_common()
462 linkp->ll_zoneid = zoneid; in dlmgmt_create_common()
463 linkp->ll_gen = 0; in dlmgmt_create_common()
465 if (avl_find(&dlmgmt_name_avl, linkp, &name_where) != NULL || in dlmgmt_create_common()
466 avl_find(&dlmgmt_id_avl, linkp, &id_where) != NULL) { in dlmgmt_create_common()
471 avl_insert(&dlmgmt_name_avl, linkp, name_where); in dlmgmt_create_common()
472 avl_insert(&dlmgmt_id_avl, linkp, id_where); in dlmgmt_create_common()
474 if ((flags & DLMGMT_ACTIVE) && (err = link_activate(linkp)) != 0) { in dlmgmt_create_common()
475 avl_remove(&dlmgmt_name_avl, linkp); in dlmgmt_create_common()
476 avl_remove(&dlmgmt_id_avl, linkp); in dlmgmt_create_common()
480 linkp->ll_flags = flags; in dlmgmt_create_common()
481 dlmgmt_advance(linkp); in dlmgmt_create_common()
482 *linkpp = linkp; in dlmgmt_create_common()
486 free(linkp); in dlmgmt_create_common()
491 dlmgmt_destroy_common(dlmgmt_link_t *linkp, uint32_t flags) in dlmgmt_destroy_common() argument
493 if ((linkp->ll_flags & flags) == 0) { in dlmgmt_destroy_common()
500 linkp->ll_flags &= ~flags; in dlmgmt_destroy_common()
504 for (attrp = linkp->ll_head; attrp != NULL; attrp = next) { in dlmgmt_destroy_common()
509 linkp->ll_head = NULL; in dlmgmt_destroy_common()
512 if ((flags & DLMGMT_ACTIVE) && linkp->ll_zoneid != GLOBAL_ZONEID) { in dlmgmt_destroy_common()
513 (void) zone_remove_datalink(linkp->ll_zoneid, linkp->ll_linkid); in dlmgmt_destroy_common()
514 if (linkp->ll_onloan) in dlmgmt_destroy_common()
515 avl_remove(&dlmgmt_loan_avl, linkp); in dlmgmt_destroy_common()
518 if (linkp->ll_flags == 0) { in dlmgmt_destroy_common()
519 avl_remove(&dlmgmt_id_avl, linkp); in dlmgmt_destroy_common()
520 avl_remove(&dlmgmt_name_avl, linkp); in dlmgmt_destroy_common()
521 link_destroy(linkp); in dlmgmt_destroy_common()
612 dlmgmt_link_t link, *linkp; in dlmgmt_generate_name() local
648 if ((linkp = avl_find(&dlmgmt_name_avl, &link, NULL)) != NULL) in dlmgmt_generate_name()
649 dlmgmt_advance_ppa(linkp); in dlmgmt_generate_name()
664 dlmgmt_advance_ppa(dlmgmt_link_t *linkp) in dlmgmt_advance_ppa() argument
671 (void) dlpi_parselink(linkp->ll_link, prefix, &ppa); in dlmgmt_advance_ppa()
677 if (lpp->lp_zoneid == linkp->ll_zoneid && in dlmgmt_advance_ppa()
690 linkp = AVL_NEXT(&dlmgmt_name_avl, linkp); in dlmgmt_advance_ppa()
699 linkp = link_by_name(linkname, lpp->lp_zoneid); in dlmgmt_advance_ppa()
700 if (linkp == NULL) in dlmgmt_advance_ppa()
703 if (linkp == NULL) in dlmgmt_advance_ppa()
705 (void) dlpi_parselink(linkp->ll_link, prefix, &ppa); in dlmgmt_advance_ppa()
711 linkp = AVL_NEXT(&dlmgmt_name_avl, linkp); in dlmgmt_advance_ppa()
721 dlmgmt_advance_linkid(dlmgmt_link_t *linkp) in dlmgmt_advance_linkid() argument
725 if (linkp->ll_linkid != dlmgmt_nextlinkid) in dlmgmt_advance_linkid()
729 linkp = AVL_NEXT(&dlmgmt_id_avl, linkp); in dlmgmt_advance_linkid()
737 if ((linkp = link_by_id(1, GLOBAL_ZONEID)) == NULL) in dlmgmt_advance_linkid()
741 if (linkp == NULL) in dlmgmt_advance_linkid()
743 if (linkp->ll_linkid != dlmgmt_nextlinkid) in dlmgmt_advance_linkid()
747 linkp = AVL_NEXT(&dlmgmt_id_avl, linkp); in dlmgmt_advance_linkid()
758 dlmgmt_advance(dlmgmt_link_t *linkp) in dlmgmt_advance() argument
760 dlmgmt_advance_linkid(linkp); in dlmgmt_advance()
761 dlmgmt_advance_ppa(linkp); in dlmgmt_advance()