Lines Matching defs:linkp

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