Lines Matching refs:ad
57 static void delete_ds(adutils_ad_t *ad, const char *host, int port);
500 adutils_ad_t *ad; in adutils_ad_alloc() local
504 if ((ad = calloc(1, sizeof (*ad))) == NULL) in adutils_ad_alloc()
506 ad->ref = 1; in adutils_ad_alloc()
507 ad->partition = part; in adutils_ad_alloc()
514 ad->basedn = adutils_dns2dn(domain_name); in adutils_ad_alloc()
517 ad->basedn = strdup(""); in adutils_ad_alloc()
519 if (ad->basedn == NULL) in adutils_ad_alloc()
522 if (pthread_mutex_init(&ad->lock, NULL) != 0) in adutils_ad_alloc()
524 *new_ad = ad; in adutils_ad_alloc()
528 free(ad->basedn); in adutils_ad_alloc()
529 free(ad); in adutils_ad_alloc()
534 adutils_ad_free(adutils_ad_t **ad) in adutils_ad_free() argument
539 if (ad == NULL || *ad == NULL) in adutils_ad_free()
542 (void) pthread_mutex_lock(&(*ad)->lock); in adutils_ad_free()
544 if (atomic_dec_32_nv(&(*ad)->ref) > 0) { in adutils_ad_free()
545 (void) pthread_mutex_unlock(&(*ad)->lock); in adutils_ad_free()
546 *ad = NULL; in adutils_ad_free()
554 if (p->owner != (*ad)) { in adutils_ad_free()
559 delete_ds((*ad), p->host, p->port); in adutils_ad_free()
568 (void) pthread_mutex_unlock(&(*ad)->lock); in adutils_ad_free()
569 (void) pthread_mutex_destroy(&(*ad)->lock); in adutils_ad_free()
571 if ((*ad)->known_domains) in adutils_ad_free()
572 free((*ad)->known_domains); in adutils_ad_free()
573 free((*ad)->basedn); in adutils_ad_free()
574 free(*ad); in adutils_ad_free()
576 *ad = NULL; in adutils_ad_free()
663 get_conn(adutils_ad_t *ad) in get_conn() argument
687 if (adh->owner == ad) in get_conn()
703 adh = ad->last_adh; in get_conn()
712 if (adh != NULL && adh->owner == ad && adh->ld != NULL && in get_conn()
717 if (adh->owner == ad) in get_conn()
721 ad->last_adh = adh; in get_conn()
766 adutils_add_ds(adutils_ad_t *ad, const char *host, int port) in adutils_add_ds() argument
775 if (p->owner != ad) in adutils_add_ds()
791 new->owner = ad; in adutils_add_ds()
834 delete_ds(adutils_ad_t *ad, const char *host, int port) in delete_ds() argument
839 if ((*p)->owner != ad || strcmp(host, (*p)->host) != 0 || in delete_ds()
876 adutils_add_domain(adutils_ad_t *ad, const char *domain, const char *sid) in adutils_add_domain() argument
879 int num = ad->num_known_domains; in adutils_add_domain()
881 ad->num_known_domains++; in adutils_add_domain()
882 new = realloc(ad->known_domains, in adutils_add_domain()
883 sizeof (struct known_domain) * ad->num_known_domains); in adutils_add_domain()
885 ad->known_domains = new; in adutils_add_domain()
886 (void) strlcpy(ad->known_domains[num].name, domain, in adutils_add_domain()
887 sizeof (ad->known_domains[num].name)); in adutils_add_domain()
888 (void) strlcpy(ad->known_domains[num].sid, sid, in adutils_add_domain()
889 sizeof (ad->known_domains[num].sid)); in adutils_add_domain()
892 if (ad->known_domains != NULL) { in adutils_add_domain()
893 free(ad->known_domains); in adutils_add_domain()
894 ad->known_domains = NULL; in adutils_add_domain()
896 ad->num_known_domains = 0; in adutils_add_domain()
914 adutils_ad_t *ad = qs->qadh->owner; in adutils_lookup_check_domain() local
917 for (i = 0; i < ad->num_known_domains; i++) { in adutils_lookup_check_domain()
918 if (domain_eq(domain, ad->known_domains[i].name)) in adutils_lookup_check_domain()
939 adutils_ad_t *ad = qs->qadh->owner; in adutils_lookup_check_sid_prefix() local
943 for (i = 0; i < ad->num_known_domains; i++) { in adutils_lookup_check_sid_prefix()
944 if (strcmp(sid, ad->known_domains[i].sid) == 0) in adutils_lookup_check_sid_prefix()
953 adutils_lookup_batch_start(adutils_ad_t *ad, int nqueries, in adutils_lookup_batch_start() argument
961 if (ad == NULL) in adutils_lookup_batch_start()
965 adh = get_conn(ad); in adutils_lookup_batch_start()
1677 adutils_lookup(adutils_ad_t *ad, const char *filter, const char **attrs, in adutils_lookup() argument
1683 rc = adutils_lookup_batch_start(ad, 1, NULL, NULL, &qs); in adutils_lookup()