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); \
202 conn_tsd_setup(ns_conn_mgmt_t *cmg) in conn_tsd_setup() argument
207 rc = thr_setspecific(ns_cmgkey, cmg); in conn_tsd_setup()
267 conn_tsd_check(ns_conn_mgmt_t *cmg) in conn_tsd_check() argument
269 if (conn_tsd_setup(cmg) != 0) in conn_tsd_check()
384 setup_mt_ld(LDAP *ld, ns_conn_mgmt_t *cmg) in setup_mt_ld() argument
389 if (conn_tsd_setup(cmg) == -1) { in setup_mt_ld()
538 ns_conn_mgmt_t *cmg; in init_conn_mgmt() local
540 cmg = (ns_conn_mgmt_t *)calloc(1, sizeof (*cmg)); in init_conn_mgmt()
541 if (cmg == NULL) { in init_conn_mgmt()
547 cmg->is_nscd = __s_api_nscd_proc(); in init_conn_mgmt()
548 cmg->is_peruser_nscd = __s_api_peruser_proc(); in init_conn_mgmt()
554 cmg->ldap_mt = B_TRUE; in init_conn_mgmt()
556 cmg->state = NS_CONN_MGMT_INACTIVE; in init_conn_mgmt()
558 (void) mutex_init(&cmg->lock, USYNC_THREAD, NULL); in init_conn_mgmt()
559 (void) mutex_init(&cmg->cfg_lock, USYNC_THREAD, NULL); in init_conn_mgmt()
560 cmg->pid = getpid(); in init_conn_mgmt()
563 if (cmg->is_nscd == B_TRUE || cmg->is_peruser_nscd == B_TRUE) in init_conn_mgmt()
564 cmg->state = NS_CONN_MGMT_ACTIVE; in init_conn_mgmt()
570 cmg->config = __s_api_get_default_config_global(); in init_conn_mgmt()
571 if (cmg->config == NULL) in init_conn_mgmt()
572 cmg->config = __s_api_loadrefresh_config_global(); in init_conn_mgmt()
573 if (cmg->config != NULL) { in init_conn_mgmt()
578 if (cmg->is_nscd == B_TRUE) in init_conn_mgmt()
579 (cmg->config)->paramList[NS_LDAP_EXP_P].ns_tm = 0; in init_conn_mgmt()
580 cmg->cfg_cookie = cmg->config->config_cookie; in init_conn_mgmt()
583 return (cmg); in init_conn_mgmt()
589 ns_conn_mgmt_t *cmg = ns_connmgmt; in mark_shutdown_or_reloaded() local
591 (void) mutex_lock(&cmg->lock); in mark_shutdown_or_reloaded()
593 cmg->shutting_down = B_TRUE; in mark_shutdown_or_reloaded()
595 cmg->cfg_reloaded = B_TRUE; in mark_shutdown_or_reloaded()
596 atomic_inc_uint(&cmg->ref_cnt); in mark_shutdown_or_reloaded()
597 cmg->state = NS_CONN_MGMT_DETACHED; in mark_shutdown_or_reloaded()
602 (void) mutex_unlock(&cmg->lock); in mark_shutdown_or_reloaded()
615 ns_conn_mgmt_t *cmg = ns_connmgmt; in get_current_conn_mgmt() local
620 if (cmg == NULL || checked_pid != mypid) { in get_current_conn_mgmt()
627 if (cmg == NULL || cmg->pid != mypid) { in get_current_conn_mgmt()
628 if (cmg != NULL) { in get_current_conn_mgmt()
638 ns_connmgmt_parent = cmg; in get_current_conn_mgmt()
647 cmg = ns_connmgmt; in get_current_conn_mgmt()
653 atomic_inc_uint(&cmg->ref_cnt); in get_current_conn_mgmt()
657 return (cmg); in get_current_conn_mgmt()
663 ns_conn_mgmt_t *cmg = NULL; in access_conn_mgmt() local
680 cmg = ns_connmgmt; in access_conn_mgmt()
685 return (cmg); in access_conn_mgmt()
699 cmg = get_current_conn_mgmt(op); in access_conn_mgmt()
700 if (cmg == NULL) { in access_conn_mgmt()
705 atomic_inc_uint(&cmg->ref_cnt); in access_conn_mgmt()
708 cmg = cmg_prev; in access_conn_mgmt()
710 if (cmg->config == NULL) in access_conn_mgmt()
711 cmg->config = __s_api_get_default_config(); in access_conn_mgmt()
715 return (cmg); in access_conn_mgmt()
722 free_conn_mgmt(ns_conn_mgmt_t *cmg) in free_conn_mgmt() argument
734 if (cmg == NULL) in free_conn_mgmt()
736 cookie = cmg->cfg_cookie; in free_conn_mgmt()
738 __s_api_free2dArray(cmg->pservers); in free_conn_mgmt()
740 if (cmg->config != NULL) { in free_conn_mgmt()
741 if (cmg->state == NS_CONN_MGMT_DETACHED) in free_conn_mgmt()
742 __s_api_destroy_config(cmg->config); in free_conn_mgmt()
744 __s_api_release_config(cmg->config); in free_conn_mgmt()
748 if (cmg->procchg_started == B_TRUE) { in free_conn_mgmt()
749 if (cmg->procchg_tid != thr_self()) { in free_conn_mgmt()
750 if (cmg->procchg_door_call == B_TRUE) { in free_conn_mgmt()
770 (void) pthread_cancel(cmg->procchg_tid); in free_conn_mgmt()
771 cmg->procchg_started = B_FALSE; in free_conn_mgmt()
775 free(cmg); in free_conn_mgmt()
779 release_conn_mgmt(ns_conn_mgmt_t *cmg, boolean_t unlock_cmg) in release_conn_mgmt() argument
781 if (cmg == NULL) in release_conn_mgmt()
783 if (atomic_dec_uint_nv(&cmg->ref_cnt) == 0) { in release_conn_mgmt()
784 if (cmg->state == NS_CONN_MGMT_DETACHED) { in release_conn_mgmt()
786 (void) mutex_unlock(&cmg->lock); in release_conn_mgmt()
787 free_conn_mgmt(cmg); in release_conn_mgmt()
794 " is not DETACHED (%d)"), cmg->state); in release_conn_mgmt()
795 cmg = NULL; in release_conn_mgmt()
798 return (cmg); in release_conn_mgmt()
825 ns_conn_mgmt_t *cmg; in __s_api_conn_user_init() local
830 cmg = access_conn_mgmt(NS_CONN_MGMT_OP_REF); in __s_api_conn_user_init()
831 if (cmg == NULL) in __s_api_conn_user_init()
834 if (cmg->state != NS_CONN_MGMT_ACTIVE && in __s_api_conn_user_init()
835 cmg->state != NS_CONN_MGMT_INACTIVE) { in __s_api_conn_user_init()
836 atomic_dec_uint(&cmg->ref_cnt); in __s_api_conn_user_init()
842 atomic_dec_uint(&cmg->ref_cnt); in __s_api_conn_user_init()
852 cu->conn_mgmt = cmg; in __s_api_conn_user_init()
854 (void) conn_tsd_setup(cmg); in __s_api_conn_user_init()
870 ns_conn_mgmt_t *cmg; in __s_api_conn_user_free() local
879 cmg = cu->conn_mgmt; in __s_api_conn_user_free()
881 (void) release_conn_mgmt(cmg, B_FALSE); in __s_api_conn_user_free()
893 init_conn_mt(ns_conn_mgmt_t *cmg, ns_ldap_error_t **ep) in init_conn_mt() argument
906 if (cmg_a != cmg) { in init_conn_mt()
924 cm->conn_mgmt = cmg; in init_conn_mt()
937 ns_conn_mgmt_t *cmg; in free_conn_mt() local
948 cmg = cm->conn_mgmt; in free_conn_mt()
950 return (release_conn_mgmt(cmg, unlock_cmg)); in free_conn_mt()
970 add_cm2cmg(ns_conn_mt_t *cm, ns_conn_mgmt_t *cmg) in add_cm2cmg() argument
978 if (cmg->cm_head == NULL) { in add_cm2cmg()
979 cmg->cm_head = cm; in add_cm2cmg()
980 cmg->cm_tail = cm; in add_cm2cmg()
983 cm->next = cmg->cm_head; in add_cm2cmg()
984 cmg->cm_head = cm; in add_cm2cmg()
986 cmg->cm_tail->next = cm; in add_cm2cmg()
987 cmg->cm_tail = cm; in add_cm2cmg()
990 cmg->cm_cnt++; in add_cm2cmg()
1040 del_cm4cmg(ns_conn_mt_t *cm, ns_conn_mgmt_t *cmg) in del_cm4cmg() argument
1044 if (cm == NULL || cmg->cm_head == NULL || cmg->cm_cnt == 0) in del_cm4cmg()
1048 if (cmg->cm_head == cmg->cm_tail) { in del_cm4cmg()
1049 if (cm == cmg->cm_head) { in del_cm4cmg()
1050 cmg->cm_head = cmg->cm_tail = NULL; in del_cm4cmg()
1051 cmg->cm_cnt = 0; in del_cm4cmg()
1058 if (cm == cmg->cm_head) { in del_cm4cmg()
1059 cmg->cm_head = cm->next; in del_cm4cmg()
1060 cmg->cm_cnt--; in del_cm4cmg()
1065 pm = cmg->cm_head; in del_cm4cmg()
1066 for (m = cmg->cm_head->next; m; m = m->next) { in del_cm4cmg()
1071 if (pm != cmg->cm_tail) { in del_cm4cmg()
1074 cmg->cm_tail = pm; in del_cm4cmg()
1075 cmg->cm_cnt--; in del_cm4cmg()
1158 check_and_close_conn(ns_conn_mgmt_t *cmg, ns_conn_mt_t **cm, in check_and_close_conn() argument
1173 if (cmg->pservers_loaded == B_FALSE) in check_and_close_conn()
1174 get_preferred_servers(B_FALSE, B_FALSE, cmg); in check_and_close_conn()
1175 if (cmg->pservers == NULL) in check_and_close_conn()
1191 for (j = 0; cmg->pservers[j] != NULL; j++) { in check_and_close_conn()
1192 if (strcasecmp(sinfo.server, cmg->pservers[j]) != 0) in check_and_close_conn()
1201 for (j = 0; cmg->pservers[j] != NULL; j++) { in check_and_close_conn()
1202 if (strcasecmp(cmg->pservers[j], (*cm)->conn->serverAddr) != 0) in check_and_close_conn()
1243 if (cmg->shutting_down == B_FALSE) in check_and_close_conn()
1251 if (cmg->shutting_down == B_FALSE) in check_and_close_conn()
1284 ns_conn_mgmt_t *cmg = cm->conn_mgmt; in match_conn_mt() local
1352 cmg->is_nscd == B_FALSE && !__s_api_isStandalone()) { in match_conn_mt()
1353 drop_conn = check_and_close_conn(cmg, &cm, cu); in match_conn_mt()
1397 ns_conn_mgmt_t *cmg; in __s_api_conn_mt_get() local
1403 cmg = cu->conn_mgmt; in __s_api_conn_mt_get()
1422 if (!((cmg->state == NS_CONN_MGMT_INACTIVE && in __s_api_conn_mt_get()
1423 cu->keep_conn == B_TRUE) || cmg->state == NS_CONN_MGMT_ACTIVE)) in __s_api_conn_mt_get()
1429 NS_CONN_CHECK_ABORT_AND_LOCK(cmg, cu, errorp); in __s_api_conn_mt_get()
1435 for (cn = cmg->cm_head; cn; cn = cn->next) { in __s_api_conn_mt_get()
1459 (void) mutex_unlock(&cmg->lock); in __s_api_conn_mt_get()
1514 cn = init_conn_mt(cmg, errorp); in __s_api_conn_mt_get()
1516 (void) mutex_unlock(&cmg->lock); in __s_api_conn_mt_get()
1522 if (cmg->ldap_mt == B_TRUE) in __s_api_conn_mt_get()
1526 add_cm2cmg(cn, cmg); in __s_api_conn_mt_get()
1527 (void) mutex_unlock(&cmg->lock); in __s_api_conn_mt_get()
1545 ns_conn_mgmt_t *cmg = cu->conn_mgmt; in __s_api_conn_mt_add() local
1549 NS_CONN_CHECK_ABORT_AND_LOCK(cmg, cu, ep); in __s_api_conn_mt_add()
1556 if (cmg->procchg_started == B_FALSE && cmg->is_nscd == B_TRUE) { in __s_api_conn_mt_add()
1557 start_thread(cmg); in __s_api_conn_mt_add()
1558 cmg->procchg_started = B_TRUE; in __s_api_conn_mt_add()
1570 if (cmg->ldap_mt == B_TRUE) in __s_api_conn_mt_add()
1579 (void) mutex_unlock(&cmg->lock); in __s_api_conn_mt_add()
1595 ns_conn_mgmt_t *cmg; in __s_api_conn_mt_return() local
1602 cmg = cu->conn_mgmt; in __s_api_conn_mt_return()
1618 (void) mutex_lock(&cmg->lock); in __s_api_conn_mt_return()
1620 del_cm4cmg(cm, cmg); in __s_api_conn_mt_return()
1622 NS_CONN_UNLOCK_AND_FREE(ns_conn_free, cm, cmg); in __s_api_conn_mt_return()
1705 ns_conn_mgmt_t *cmg; in __s_api_conn_mt_remove() local
1713 cmg = cu->conn_mgmt; in __s_api_conn_mt_remove()
1715 (void) mutex_lock(&cmg->lock); in __s_api_conn_mt_remove()
1735 del_cm4cmg(cm, cmg); in __s_api_conn_mt_remove()
1739 NS_CONN_UNLOCK_AND_FREE(free_cm, cm, cmg); in __s_api_conn_mt_remove()
1751 ns_conn_mgmt_t *cmg; in __s_api_check_libldap_MT_conn_support() local
1757 cmg = cu->conn_mgmt; in __s_api_check_libldap_MT_conn_support()
1758 rc = setup_mt_ld(ld, cmg); in __s_api_check_libldap_MT_conn_support()
1760 if (cmg->do_mt_conn == B_FALSE) { in __s_api_check_libldap_MT_conn_support()
1766 NS_CONN_CHECK_ABORT_AND_LOCK(cmg, cu, ep); in __s_api_check_libldap_MT_conn_support()
1767 if (cmg->do_mt_conn == B_FALSE) { in __s_api_check_libldap_MT_conn_support()
1769 cmg->ldap_mt = B_FALSE; in __s_api_check_libldap_MT_conn_support()
1771 cmg->ldap_mt = B_TRUE; in __s_api_check_libldap_MT_conn_support()
1772 if (cmg->is_nscd == B_TRUE || in __s_api_check_libldap_MT_conn_support()
1773 cmg->is_peruser_nscd == B_TRUE) { in __s_api_check_libldap_MT_conn_support()
1774 cmg->do_mt_conn = B_TRUE; in __s_api_check_libldap_MT_conn_support()
1775 cmg->state = NS_CONN_MGMT_ACTIVE; in __s_api_check_libldap_MT_conn_support()
1779 (void) mutex_unlock(&cmg->lock); in __s_api_check_libldap_MT_conn_support()
1796 ns_conn_mgmt_t *cmg = cm->conn_mgmt; in close_conn_mt() local
1801 NS_CONN_MT_CLOSING) || cmg->cm_head == NULL || cmg->cm_cnt == 0) in close_conn_mt()
1805 for (m = cmg->cm_head; m; m = m->next) { in close_conn_mt()
1834 if (cmg->shutting_down == B_FALSE) in close_conn_mt()
1843 del_cm4cmg(cm, cmg); in close_conn_mt()
1866 ns_conn_mgmt_t *cmg; in __s_api_conn_mt_close() local
1875 cmg = cu->conn_mgmt; in __s_api_conn_mt_close()
1877 (void) mutex_lock(&cmg->lock); in __s_api_conn_mt_close()
1884 (void) mutex_unlock(&cmg->lock); in __s_api_conn_mt_close()
1898 if (cmg->shutting_down == B_FALSE) in __s_api_conn_mt_close()
1900 NS_CONN_UNLOCK_AND_FREE(free_cm, cm, cmg); in __s_api_conn_mt_close()
1912 ns_conn_mgmt_t *cmg; in close_conn_mt_by_procchg() local
1918 cmg = cm->conn_mgmt; in close_conn_mt_by_procchg()
1927 (void) mutex_lock(&cmg->lock); in close_conn_mt_by_procchg()
1934 (void) mutex_unlock(&cmg->lock); in close_conn_mt_by_procchg()
1939 NS_CONN_UNLOCK_AND_FREE(free_cm, cm, cmg); in close_conn_mt_by_procchg()
1970 get_preferred_servers(boolean_t lock, boolean_t reload, ns_conn_mgmt_t *cmg) in get_preferred_servers() argument
1976 (void) mutex_lock(&cmg->lock); in get_preferred_servers()
1979 if (cmg->pservers_loaded == B_TRUE && reload == B_FALSE) in get_preferred_servers()
1982 if (cmg->pservers != NULL) { in get_preferred_servers()
1983 (void) __ns_ldap_freeParam((void ***)&cmg->pservers); in get_preferred_servers()
1984 cmg->pservers = NULL; in get_preferred_servers()
1989 cmg->pservers = (char **)pservers; in get_preferred_servers()
1990 cmg->pservers_loaded = B_TRUE; in get_preferred_servers()
2002 proc_server_change(ns_server_status_change_t *chg, ns_conn_mgmt_t *cmg) in proc_server_change() argument
2024 return (cmg); in proc_server_change()
2039 (void) mutex_lock(&cmg->lock); in proc_server_change()
2042 for (cm = cmg->cm_head; cm; cm = cm->next) { in proc_server_change()
2055 (void) mutex_unlock(&cmg->lock); in proc_server_change()
2082 B_FALSE, cmg); in proc_server_change()
2088 if (cmg->pservers == NULL) { in proc_server_change()
2089 (void) mutex_unlock(&cmg->lock); in proc_server_change()
2090 return (cmg); in proc_server_change()
2109 (void) mutex_lock(&cmg->lock); in proc_server_change()
2115 for (j = 0; cmg->pservers[j] != NULL; j++) { in proc_server_change()
2116 if (strcasecmp(cmg->pservers[j], in proc_server_change()
2129 for (cm = cmg->cm_head; cm; cm = cm->next) { in proc_server_change()
2154 cmg->pservers[j]) == 0) { in proc_server_change()
2171 cm, cmg); in proc_server_change()
2192 (void) mutex_unlock(&cmg->lock); in proc_server_change()
2193 return (cmg); in proc_server_change()
2198 shutdown_all_conn_mt(ns_conn_mgmt_t *cmg) in shutdown_all_conn_mt() argument
2211 (void) mutex_lock(&cmg->lock); in shutdown_all_conn_mt()
2212 while (cmg->cm_head != NULL && done == B_FALSE) { in shutdown_all_conn_mt()
2213 for (cm = cmg->cm_head; cm; cm = cm->next) { in shutdown_all_conn_mt()
2230 (void) mutex_unlock(&cmg->lock); in shutdown_all_conn_mt()
2238 ns_conn_mgmt_t *cmg; in __s_api_shutdown_conn_mgmt() local
2240 cmg = access_conn_mgmt(NS_CONN_MGMT_OP_SHUTDOWN); in __s_api_shutdown_conn_mgmt()
2241 if (cmg == NULL) /* already being SHUT done */ in __s_api_shutdown_conn_mgmt()
2244 (void) shutdown_all_conn_mt(cmg); in __s_api_shutdown_conn_mgmt()
2245 (void) release_conn_mgmt(cmg, B_FALSE); in __s_api_shutdown_conn_mgmt()
2248 (void) release_conn_mgmt(cmg, B_FALSE); in __s_api_shutdown_conn_mgmt()
2259 ns_conn_mgmt_t *cmg; in __s_api_reinit_conn_mgmt_new_config() local
2262 cmg = access_conn_mgmt(NS_CONN_MGMT_OP_REF); in __s_api_reinit_conn_mgmt_new_config()
2263 if (cmg == NULL) in __s_api_reinit_conn_mgmt_new_config()
2265 if (cmg->config == new_cfg || cmg->state == NS_CONN_MGMT_DETACHED) { in __s_api_reinit_conn_mgmt_new_config()
2266 (void) release_conn_mgmt(cmg, B_FALSE); in __s_api_reinit_conn_mgmt_new_config()
2272 if (ocmg == cmg) in __s_api_reinit_conn_mgmt_new_config()
2279 (void) release_conn_mgmt(cmg, B_FALSE); in __s_api_reinit_conn_mgmt_new_config()
2298 ns_conn_mgmt_t *cmg; in __s_api_setup_retry_search() local
2307 cmg = cu->conn_mgmt; in __s_api_setup_retry_search()
2311 if (cmg != NULL && cmg->cfg_reloaded == B_TRUE) in __s_api_setup_retry_search()
2347 ns_conn_mgmt_t *cmg; in __s_api_setup_getnext() local
2353 if (cu->conn_mt != NULL && (cmg = cu->conn_mgmt) != NULL) { in __s_api_setup_getnext()
2363 rc = conn_tsd_check(cmg); in __s_api_setup_getnext()
2445 ns_conn_mgmt_t *cmg; in get_server_change() local
2452 cmg = access_conn_mgmt(NS_CONN_MGMT_OP_REF); in get_server_change()
2453 if (cmg != ocmg) in get_server_change()
2456 cmg->procchg_tid = thr_self(); in get_server_change()
2459 (void) conn_tsd_setup(cmg); in get_server_change()
2460 cookie = cmg->cfg_cookie; in get_server_change()
2479 if (cmg == NULL || cmg->state == NS_CONN_MGMT_DETACHED || in get_server_change()
2482 if (cmg != NULL) { in get_server_change()
2483 cmg->procchg_started = B_FALSE; in get_server_change()
2484 (void) release_conn_mgmt(cmg, B_FALSE); in get_server_change()
2501 cmg->procchg_door_call = B_TRUE; in get_server_change()
2502 if (release_conn_mgmt(cmg, B_FALSE) == NULL) { in get_server_change()
2515 cmg = access_conn_mgmt(NS_CONN_MGMT_OP_REF); in get_server_change()
2516 if (cmg != NULL) in get_server_change()
2517 cmg->procchg_door_call = B_FALSE; in get_server_change()
2518 if (cmg != ocmg) { in get_server_change()
2519 if (cmg != NULL) { in get_server_change()
2520 cmg->procchg_started = B_FALSE; in get_server_change()
2521 (void) release_conn_mgmt(cmg, B_FALSE); in get_server_change()
2550 cmg = proc_server_change(&chg, cmg); in get_server_change()
2564 cmg = proc_server_change(&chg, cmg); in get_server_change()
2621 cmg = proc_server_change(&chg, cmg); in get_server_change()
2631 start_thread(ns_conn_mgmt_t *cmg) in start_thread() argument
2640 (void *)cmg, THR_DETACHED, NULL) != 0) { in start_thread()