Lines Matching refs:cmg

59 void shutdown_all_conn_mt(ns_conn_mgmt_t *cmg);
64 ns_conn_mgmt_t *cmg);
94 #define NS_CONN_UNLOCK_AND_FREE(free, cm, cmg) \ argument
98 cmg = free_conn_mt((cm), 1); \
99 if (cmg != NULL) \
100 (void) mutex_unlock(&(cmg)->lock); \
103 #define NS_CONN_CHECK_ABORT_AND_LOCK(cmg, cu, errp) \ argument
106 (void) mutex_lock(&(cmg)->lock); \
107 if ((cmg)->shutting_down == B_TRUE) \
109 else if ((cmg)->cfg_reloaded == B_TRUE) \
113 (void) mutex_unlock(&(cmg)->lock); \
200 conn_tsd_setup(ns_conn_mgmt_t *cmg) in conn_tsd_setup() argument
205 rc = thr_setspecific(ns_cmgkey, cmg); in conn_tsd_setup()
265 conn_tsd_check(ns_conn_mgmt_t *cmg) in conn_tsd_check() argument
267 if (conn_tsd_setup(cmg) != 0) in conn_tsd_check()
376 setup_mt_ld(LDAP *ld, ns_conn_mgmt_t *cmg) in setup_mt_ld() argument
381 if (conn_tsd_setup(cmg) == -1) { in setup_mt_ld()
530 ns_conn_mgmt_t *cmg; in init_conn_mgmt() local
532 cmg = (ns_conn_mgmt_t *)calloc(1, sizeof (*cmg)); in init_conn_mgmt()
533 if (cmg == NULL) { in init_conn_mgmt()
539 cmg->is_nscd = __s_api_nscd_proc(); in init_conn_mgmt()
540 cmg->is_peruser_nscd = __s_api_peruser_proc(); in init_conn_mgmt()
546 cmg->ldap_mt = B_TRUE; in init_conn_mgmt()
548 cmg->state = NS_CONN_MGMT_INACTIVE; in init_conn_mgmt()
550 (void) mutex_init(&cmg->lock, USYNC_THREAD, NULL); in init_conn_mgmt()
551 (void) mutex_init(&cmg->cfg_lock, USYNC_THREAD, NULL); in init_conn_mgmt()
552 cmg->pid = getpid(); in init_conn_mgmt()
555 if (cmg->is_nscd == B_TRUE || cmg->is_peruser_nscd == B_TRUE) in init_conn_mgmt()
556 cmg->state = NS_CONN_MGMT_ACTIVE; in init_conn_mgmt()
562 cmg->config = __s_api_get_default_config_global(); in init_conn_mgmt()
563 if (cmg->config == NULL) in init_conn_mgmt()
564 cmg->config = __s_api_loadrefresh_config_global(); in init_conn_mgmt()
565 if (cmg->config != NULL) { in init_conn_mgmt()
570 if (cmg->is_nscd == B_TRUE) in init_conn_mgmt()
571 (cmg->config)->paramList[NS_LDAP_EXP_P].ns_tm = 0; in init_conn_mgmt()
572 cmg->cfg_cookie = cmg->config->config_cookie; in init_conn_mgmt()
575 return (cmg); in init_conn_mgmt()
581 ns_conn_mgmt_t *cmg = ns_connmgmt; in mark_shutdown_or_reloaded() local
583 (void) mutex_lock(&cmg->lock); in mark_shutdown_or_reloaded()
585 cmg->shutting_down = B_TRUE; in mark_shutdown_or_reloaded()
587 cmg->cfg_reloaded = B_TRUE; in mark_shutdown_or_reloaded()
588 atomic_inc_uint(&cmg->ref_cnt); in mark_shutdown_or_reloaded()
589 cmg->state = NS_CONN_MGMT_DETACHED; in mark_shutdown_or_reloaded()
594 (void) mutex_unlock(&cmg->lock); in mark_shutdown_or_reloaded()
607 ns_conn_mgmt_t *cmg = ns_connmgmt; in get_current_conn_mgmt() local
612 if (cmg == NULL || checked_pid != mypid) { in get_current_conn_mgmt()
619 if (cmg == NULL || cmg->pid != mypid) { in get_current_conn_mgmt()
620 if (cmg != NULL) { in get_current_conn_mgmt()
630 ns_connmgmt_parent = cmg; in get_current_conn_mgmt()
639 cmg = ns_connmgmt; in get_current_conn_mgmt()
645 atomic_inc_uint(&cmg->ref_cnt); in get_current_conn_mgmt()
649 return (cmg); in get_current_conn_mgmt()
655 ns_conn_mgmt_t *cmg = NULL; in access_conn_mgmt() local
672 cmg = ns_connmgmt; in access_conn_mgmt()
677 return (cmg); in access_conn_mgmt()
691 cmg = get_current_conn_mgmt(op); in access_conn_mgmt()
692 if (cmg == NULL) { in access_conn_mgmt()
697 atomic_inc_uint(&cmg->ref_cnt); in access_conn_mgmt()
700 cmg = cmg_prev; in access_conn_mgmt()
702 if (cmg->config == NULL) in access_conn_mgmt()
703 cmg->config = __s_api_get_default_config(); in access_conn_mgmt()
707 return (cmg); in access_conn_mgmt()
714 free_conn_mgmt(ns_conn_mgmt_t *cmg) in free_conn_mgmt() argument
726 if (cmg == NULL) in free_conn_mgmt()
728 cookie = cmg->cfg_cookie; in free_conn_mgmt()
730 __s_api_free2dArray(cmg->pservers); in free_conn_mgmt()
732 if (cmg->config != NULL) { in free_conn_mgmt()
733 if (cmg->state == NS_CONN_MGMT_DETACHED) in free_conn_mgmt()
734 __s_api_destroy_config(cmg->config); in free_conn_mgmt()
736 __s_api_release_config(cmg->config); in free_conn_mgmt()
740 if (cmg->procchg_started == B_TRUE) { in free_conn_mgmt()
741 if (cmg->procchg_tid != thr_self()) { in free_conn_mgmt()
742 if (cmg->procchg_door_call == B_TRUE) { in free_conn_mgmt()
762 (void) pthread_cancel(cmg->procchg_tid); in free_conn_mgmt()
763 cmg->procchg_started = B_FALSE; in free_conn_mgmt()
767 free(cmg); in free_conn_mgmt()
771 release_conn_mgmt(ns_conn_mgmt_t *cmg, boolean_t unlock_cmg) in release_conn_mgmt() argument
773 if (cmg == NULL) in release_conn_mgmt()
775 if (atomic_dec_uint_nv(&cmg->ref_cnt) == 0) { in release_conn_mgmt()
776 if (cmg->state == NS_CONN_MGMT_DETACHED) { in release_conn_mgmt()
778 (void) mutex_unlock(&cmg->lock); in release_conn_mgmt()
779 free_conn_mgmt(cmg); in release_conn_mgmt()
786 " is not DETACHED (%d)"), cmg->state); in release_conn_mgmt()
787 cmg = NULL; in release_conn_mgmt()
790 return (cmg); in release_conn_mgmt()
817 ns_conn_mgmt_t *cmg; in __s_api_conn_user_init() local
822 cmg = access_conn_mgmt(NS_CONN_MGMT_OP_REF); in __s_api_conn_user_init()
823 if (cmg == NULL) in __s_api_conn_user_init()
826 if (cmg->state != NS_CONN_MGMT_ACTIVE && in __s_api_conn_user_init()
827 cmg->state != NS_CONN_MGMT_INACTIVE) { in __s_api_conn_user_init()
828 atomic_dec_uint(&cmg->ref_cnt); in __s_api_conn_user_init()
834 atomic_dec_uint(&cmg->ref_cnt); in __s_api_conn_user_init()
844 cu->conn_mgmt = cmg; in __s_api_conn_user_init()
846 (void) conn_tsd_setup(cmg); in __s_api_conn_user_init()
862 ns_conn_mgmt_t *cmg; in __s_api_conn_user_free() local
871 cmg = cu->conn_mgmt; in __s_api_conn_user_free()
873 (void) release_conn_mgmt(cmg, B_FALSE); in __s_api_conn_user_free()
885 init_conn_mt(ns_conn_mgmt_t *cmg, ns_ldap_error_t **ep) in init_conn_mt() argument
898 if (cmg_a != cmg) { in init_conn_mt()
916 cm->conn_mgmt = cmg; in init_conn_mt()
929 ns_conn_mgmt_t *cmg; in free_conn_mt() local
940 cmg = cm->conn_mgmt; in free_conn_mt()
942 return (release_conn_mgmt(cmg, unlock_cmg)); in free_conn_mt()
962 add_cm2cmg(ns_conn_mt_t *cm, ns_conn_mgmt_t *cmg) in add_cm2cmg() argument
970 if (cmg->cm_head == NULL) { in add_cm2cmg()
971 cmg->cm_head = cm; in add_cm2cmg()
972 cmg->cm_tail = cm; in add_cm2cmg()
975 cm->next = cmg->cm_head; in add_cm2cmg()
976 cmg->cm_head = cm; in add_cm2cmg()
978 cmg->cm_tail->next = cm; in add_cm2cmg()
979 cmg->cm_tail = cm; in add_cm2cmg()
982 cmg->cm_cnt++; in add_cm2cmg()
1032 del_cm4cmg(ns_conn_mt_t *cm, ns_conn_mgmt_t *cmg) in del_cm4cmg() argument
1036 if (cm == NULL || cmg->cm_head == NULL || cmg->cm_cnt == 0) in del_cm4cmg()
1040 if (cmg->cm_head == cmg->cm_tail) { in del_cm4cmg()
1041 if (cm == cmg->cm_head) { in del_cm4cmg()
1042 cmg->cm_head = cmg->cm_tail = NULL; in del_cm4cmg()
1043 cmg->cm_cnt = 0; in del_cm4cmg()
1050 if (cm == cmg->cm_head) { in del_cm4cmg()
1051 cmg->cm_head = cm->next; in del_cm4cmg()
1052 cmg->cm_cnt--; in del_cm4cmg()
1057 pm = cmg->cm_head; in del_cm4cmg()
1058 for (m = cmg->cm_head->next; m; m = m->next) { in del_cm4cmg()
1063 if (pm != cmg->cm_tail) { in del_cm4cmg()
1066 cmg->cm_tail = pm; in del_cm4cmg()
1067 cmg->cm_cnt--; in del_cm4cmg()
1150 check_and_close_conn(ns_conn_mgmt_t *cmg, ns_conn_mt_t **cm, in check_and_close_conn() argument
1164 if (cmg->pservers_loaded == B_FALSE) in check_and_close_conn()
1165 get_preferred_servers(B_FALSE, B_FALSE, cmg); in check_and_close_conn()
1166 if (cmg->pservers == NULL) in check_and_close_conn()
1182 for (j = 0; cmg->pservers[j] != NULL; j++) { in check_and_close_conn()
1183 if (strcasecmp(sinfo.server, cmg->pservers[j]) != 0) in check_and_close_conn()
1192 for (j = 0; cmg->pservers[j] != NULL; j++) { in check_and_close_conn()
1193 if (strcasecmp(cmg->pservers[j], (*cm)->conn->serverAddr) != 0) in check_and_close_conn()
1234 if (cmg->shutting_down == B_FALSE) in check_and_close_conn()
1242 if (cmg->shutting_down == B_FALSE) in check_and_close_conn()
1275 ns_conn_mgmt_t *cmg = cm->conn_mgmt; in match_conn_mt() local
1343 cmg->is_nscd == B_FALSE && !__s_api_isStandalone()) { in match_conn_mt()
1344 drop_conn = check_and_close_conn(cmg, &cm, cu); in match_conn_mt()
1388 ns_conn_mgmt_t *cmg; in __s_api_conn_mt_get() local
1394 cmg = cu->conn_mgmt; in __s_api_conn_mt_get()
1413 if (!((cmg->state == NS_CONN_MGMT_INACTIVE && in __s_api_conn_mt_get()
1414 cu->keep_conn == B_TRUE) || cmg->state == NS_CONN_MGMT_ACTIVE)) in __s_api_conn_mt_get()
1420 NS_CONN_CHECK_ABORT_AND_LOCK(cmg, cu, errorp); in __s_api_conn_mt_get()
1426 for (cn = cmg->cm_head; cn; cn = cn->next) { in __s_api_conn_mt_get()
1450 (void) mutex_unlock(&cmg->lock); in __s_api_conn_mt_get()
1505 cn = init_conn_mt(cmg, errorp); in __s_api_conn_mt_get()
1507 (void) mutex_unlock(&cmg->lock); in __s_api_conn_mt_get()
1513 if (cmg->ldap_mt == B_TRUE) in __s_api_conn_mt_get()
1517 add_cm2cmg(cn, cmg); in __s_api_conn_mt_get()
1518 (void) mutex_unlock(&cmg->lock); in __s_api_conn_mt_get()
1536 ns_conn_mgmt_t *cmg = cu->conn_mgmt; in __s_api_conn_mt_add() local
1540 NS_CONN_CHECK_ABORT_AND_LOCK(cmg, cu, ep); in __s_api_conn_mt_add()
1547 if (cmg->procchg_started == B_FALSE && cmg->is_nscd == B_TRUE) { in __s_api_conn_mt_add()
1548 start_thread(cmg); in __s_api_conn_mt_add()
1549 cmg->procchg_started = B_TRUE; in __s_api_conn_mt_add()
1561 if (cmg->ldap_mt == B_TRUE) in __s_api_conn_mt_add()
1570 (void) mutex_unlock(&cmg->lock); in __s_api_conn_mt_add()
1586 ns_conn_mgmt_t *cmg; in __s_api_conn_mt_return() local
1593 cmg = cu->conn_mgmt; in __s_api_conn_mt_return()
1609 (void) mutex_lock(&cmg->lock); in __s_api_conn_mt_return()
1611 del_cm4cmg(cm, cmg); in __s_api_conn_mt_return()
1613 NS_CONN_UNLOCK_AND_FREE(ns_conn_free, cm, cmg); in __s_api_conn_mt_return()
1693 ns_conn_mgmt_t *cmg; in __s_api_conn_mt_remove() local
1701 cmg = cu->conn_mgmt; in __s_api_conn_mt_remove()
1703 (void) mutex_lock(&cmg->lock); in __s_api_conn_mt_remove()
1723 del_cm4cmg(cm, cmg); in __s_api_conn_mt_remove()
1727 NS_CONN_UNLOCK_AND_FREE(free_cm, cm, cmg); in __s_api_conn_mt_remove()
1739 ns_conn_mgmt_t *cmg; in __s_api_check_libldap_MT_conn_support() local
1745 cmg = cu->conn_mgmt; in __s_api_check_libldap_MT_conn_support()
1746 rc = setup_mt_ld(ld, cmg); in __s_api_check_libldap_MT_conn_support()
1748 if (cmg->do_mt_conn == B_FALSE) { in __s_api_check_libldap_MT_conn_support()
1754 NS_CONN_CHECK_ABORT_AND_LOCK(cmg, cu, ep); in __s_api_check_libldap_MT_conn_support()
1755 if (cmg->do_mt_conn == B_FALSE) { in __s_api_check_libldap_MT_conn_support()
1757 cmg->ldap_mt = B_FALSE; in __s_api_check_libldap_MT_conn_support()
1759 cmg->ldap_mt = B_TRUE; in __s_api_check_libldap_MT_conn_support()
1760 if (cmg->is_nscd == B_TRUE || in __s_api_check_libldap_MT_conn_support()
1761 cmg->is_peruser_nscd == B_TRUE) { in __s_api_check_libldap_MT_conn_support()
1762 cmg->do_mt_conn = B_TRUE; in __s_api_check_libldap_MT_conn_support()
1763 cmg->state = NS_CONN_MGMT_ACTIVE; in __s_api_check_libldap_MT_conn_support()
1767 (void) mutex_unlock(&cmg->lock); in __s_api_check_libldap_MT_conn_support()
1784 ns_conn_mgmt_t *cmg = cm->conn_mgmt; in close_conn_mt() local
1789 NS_CONN_MT_CLOSING) || cmg->cm_head == NULL || cmg->cm_cnt == 0) in close_conn_mt()
1793 for (m = cmg->cm_head; m; m = m->next) { in close_conn_mt()
1822 if (cmg->shutting_down == B_FALSE) in close_conn_mt()
1831 del_cm4cmg(cm, cmg); in close_conn_mt()
1854 ns_conn_mgmt_t *cmg; in __s_api_conn_mt_close() local
1863 cmg = cu->conn_mgmt; in __s_api_conn_mt_close()
1865 (void) mutex_lock(&cmg->lock); in __s_api_conn_mt_close()
1872 (void) mutex_unlock(&cmg->lock); in __s_api_conn_mt_close()
1886 if (cmg->shutting_down == B_FALSE) in __s_api_conn_mt_close()
1888 NS_CONN_UNLOCK_AND_FREE(free_cm, cm, cmg); in __s_api_conn_mt_close()
1900 ns_conn_mgmt_t *cmg; in close_conn_mt_by_procchg() local
1906 cmg = cm->conn_mgmt; in close_conn_mt_by_procchg()
1915 (void) mutex_lock(&cmg->lock); in close_conn_mt_by_procchg()
1922 (void) mutex_unlock(&cmg->lock); in close_conn_mt_by_procchg()
1927 NS_CONN_UNLOCK_AND_FREE(free_cm, cm, cmg); in close_conn_mt_by_procchg()
1958 get_preferred_servers(boolean_t lock, boolean_t reload, ns_conn_mgmt_t *cmg) in get_preferred_servers() argument
1964 (void) mutex_lock(&cmg->lock); in get_preferred_servers()
1967 if (cmg->pservers_loaded == B_TRUE && reload == B_FALSE) in get_preferred_servers()
1970 if (cmg->pservers != NULL) { in get_preferred_servers()
1971 (void) __ns_ldap_freeParam((void ***)&cmg->pservers); in get_preferred_servers()
1972 cmg->pservers = NULL; in get_preferred_servers()
1977 cmg->pservers = (char **)pservers; in get_preferred_servers()
1978 cmg->pservers_loaded = B_TRUE; in get_preferred_servers()
1990 proc_server_change(ns_server_status_change_t *chg, ns_conn_mgmt_t *cmg) in proc_server_change() argument
2012 return (cmg); in proc_server_change()
2027 (void) mutex_lock(&cmg->lock); in proc_server_change()
2030 for (cm = cmg->cm_head; cm; cm = cm->next) { in proc_server_change()
2043 (void) mutex_unlock(&cmg->lock); in proc_server_change()
2070 B_FALSE, cmg); in proc_server_change()
2076 if (cmg->pservers == NULL) { in proc_server_change()
2077 (void) mutex_unlock(&cmg->lock); in proc_server_change()
2078 return (cmg); in proc_server_change()
2097 (void) mutex_lock(&cmg->lock); in proc_server_change()
2103 for (j = 0; cmg->pservers[j] != NULL; j++) { in proc_server_change()
2104 if (strcasecmp(cmg->pservers[j], in proc_server_change()
2117 for (cm = cmg->cm_head; cm; cm = cm->next) { in proc_server_change()
2142 cmg->pservers[j]) == 0) { in proc_server_change()
2159 cm, cmg); in proc_server_change()
2180 (void) mutex_unlock(&cmg->lock); in proc_server_change()
2181 return (cmg); in proc_server_change()
2186 shutdown_all_conn_mt(ns_conn_mgmt_t *cmg) in shutdown_all_conn_mt() argument
2199 (void) mutex_lock(&cmg->lock); in shutdown_all_conn_mt()
2200 while (cmg->cm_head != NULL && done == B_FALSE) { in shutdown_all_conn_mt()
2201 for (cm = cmg->cm_head; cm; cm = cm->next) { in shutdown_all_conn_mt()
2218 (void) mutex_unlock(&cmg->lock); in shutdown_all_conn_mt()
2226 ns_conn_mgmt_t *cmg; in __s_api_shutdown_conn_mgmt() local
2228 cmg = access_conn_mgmt(NS_CONN_MGMT_OP_SHUTDOWN); in __s_api_shutdown_conn_mgmt()
2229 if (cmg == NULL) /* already being SHUT done */ in __s_api_shutdown_conn_mgmt()
2232 (void) shutdown_all_conn_mt(cmg); in __s_api_shutdown_conn_mgmt()
2233 (void) release_conn_mgmt(cmg, B_FALSE); in __s_api_shutdown_conn_mgmt()
2236 (void) release_conn_mgmt(cmg, B_FALSE); in __s_api_shutdown_conn_mgmt()
2247 ns_conn_mgmt_t *cmg; in __s_api_reinit_conn_mgmt_new_config() local
2250 cmg = access_conn_mgmt(NS_CONN_MGMT_OP_REF); in __s_api_reinit_conn_mgmt_new_config()
2251 if (cmg == NULL) in __s_api_reinit_conn_mgmt_new_config()
2253 if (cmg->config == new_cfg || cmg->state == NS_CONN_MGMT_DETACHED) { in __s_api_reinit_conn_mgmt_new_config()
2254 (void) release_conn_mgmt(cmg, B_FALSE); in __s_api_reinit_conn_mgmt_new_config()
2260 if (ocmg == cmg) in __s_api_reinit_conn_mgmt_new_config()
2267 (void) release_conn_mgmt(cmg, B_FALSE); in __s_api_reinit_conn_mgmt_new_config()
2286 ns_conn_mgmt_t *cmg; in __s_api_setup_retry_search() local
2295 cmg = cu->conn_mgmt; in __s_api_setup_retry_search()
2299 if (cmg != NULL && cmg->cfg_reloaded == B_TRUE) in __s_api_setup_retry_search()
2335 ns_conn_mgmt_t *cmg; in __s_api_setup_getnext() local
2341 if (cu->conn_mt != NULL && (cmg = cu->conn_mgmt) != NULL) { in __s_api_setup_getnext()
2351 rc = conn_tsd_check(cmg); in __s_api_setup_getnext()
2433 ns_conn_mgmt_t *cmg; in get_server_change() local
2440 cmg = access_conn_mgmt(NS_CONN_MGMT_OP_REF); in get_server_change()
2441 if (cmg != ocmg) in get_server_change()
2444 cmg->procchg_tid = thr_self(); in get_server_change()
2447 (void) conn_tsd_setup(cmg); in get_server_change()
2448 cookie = cmg->cfg_cookie; in get_server_change()
2467 if (cmg == NULL || cmg->state == NS_CONN_MGMT_DETACHED || in get_server_change()
2470 if (cmg != NULL) { in get_server_change()
2471 cmg->procchg_started = B_FALSE; in get_server_change()
2472 (void) release_conn_mgmt(cmg, B_FALSE); in get_server_change()
2489 cmg->procchg_door_call = B_TRUE; in get_server_change()
2490 if (release_conn_mgmt(cmg, B_FALSE) == NULL) { in get_server_change()
2503 cmg = access_conn_mgmt(NS_CONN_MGMT_OP_REF); in get_server_change()
2504 if (cmg != NULL) in get_server_change()
2505 cmg->procchg_door_call = B_FALSE; in get_server_change()
2506 if (cmg != ocmg) { in get_server_change()
2507 if (cmg != NULL) { in get_server_change()
2508 cmg->procchg_started = B_FALSE; in get_server_change()
2509 (void) release_conn_mgmt(cmg, B_FALSE); in get_server_change()
2538 cmg = proc_server_change(&chg, cmg); in get_server_change()
2552 cmg = proc_server_change(&chg, cmg); in get_server_change()
2609 cmg = proc_server_change(&chg, cmg); in get_server_change()
2619 start_thread(ns_conn_mgmt_t *cmg) { in start_thread() argument
2627 (void *)cmg, THR_DETACHED, NULL) != 0) { in start_thread()