Lines Matching defs:lsm

74 login_sm_event_dispatch(iscsit_conn_login_t *lsm, iscsit_conn_t *ict,
213 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
215 bzero(lsm, sizeof (iscsit_conn_login_t));
217 (void) nvlist_alloc(&lsm->icl_negotiated_values, NV_UNIQUE_NAME,
231 lsm->icl_login_resp_tmpl = kmem_zalloc(sizeof (iscsi_login_rsp_hdr_t),
234 idm_sm_audit_init(&lsm->icl_state_audit);
235 mutex_init(&lsm->icl_mutex, NULL, MUTEX_DEFAULT, NULL);
236 list_create(&lsm->icl_login_events, sizeof (login_event_ctx_t),
238 list_create(&lsm->icl_pdu_list, sizeof (idm_pdu_t),
241 lsm->icl_login_state = ILS_LOGIN_INIT;
242 lsm->icl_login_last_state = ILS_LOGIN_INIT;
292 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
294 mutex_enter(&lsm->icl_mutex);
295 list_destroy(&lsm->icl_pdu_list);
296 list_destroy(&lsm->icl_login_events);
298 kmem_free(lsm->icl_login_resp_tmpl, sizeof (iscsi_login_rsp_hdr_t));
301 if (lsm->icl_login_resp_itb != NULL) {
302 idm_itextbuf_free(lsm->icl_login_resp_itb);
303 lsm->icl_login_resp_itb = NULL;
306 nvlist_free(lsm->icl_negotiated_values);
307 mutex_destroy(&lsm->icl_mutex);
332 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
335 ASSERT(mutex_owned(&lsm->icl_mutex));
341 list_insert_tail(&lsm->icl_login_events, ctx);
349 if (!lsm->icl_busy) {
350 lsm->icl_busy = B_TRUE;
351 while (!list_is_empty(&lsm->icl_login_events)) {
352 ctx = list_head(&lsm->icl_login_events);
353 list_remove(&lsm->icl_login_events, ctx);
354 idm_sm_audit_event(&lsm->icl_state_audit,
355 SAS_ISCSIT_LOGIN, (int)lsm->icl_login_state,
359 * If the lsm is in a terminal state, just drain
362 if ((lsm->icl_login_state == ILS_LOGIN_ERROR) ||
363 (lsm->icl_login_state == ILS_LOGIN_DONE)) {
367 mutex_exit(&lsm->icl_mutex);
368 login_sm_event_dispatch(lsm, ict, ctx);
369 mutex_enter(&lsm->icl_mutex);
371 lsm->icl_busy = B_FALSE;
382 if (lsm->icl_login_complete) {
383 lsm->icl_busy = B_TRUE;
406 login_sm_event_dispatch(iscsit_conn_login_t *lsm, iscsit_conn_t *ict,
445 switch (lsm->icl_login_state) {
707 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
721 iscsit_ils_name[lsm->icl_login_state], lsm->icl_login_state,
728 mutex_enter(&lsm->icl_mutex);
729 idm_sm_audit_state_change(&lsm->icl_state_audit, SAS_ISCSIT_LOGIN,
730 (int)lsm->icl_login_state, (int)new_state);
731 lsm->icl_login_last_state = lsm->icl_login_state;
732 lsm->icl_login_state = new_state;
733 mutex_exit(&lsm->icl_mutex);
735 switch (lsm->icl_login_state) {
749 if (lsm->icl_login_resp_itb != NULL) {
750 idm_itextbuf_free(lsm->icl_login_resp_itb);
751 lsm->icl_login_resp_itb = NULL;
762 lsm->icl_login_complete = B_TRUE;
775 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
788 bcopy(lsm->icl_login_resp_tmpl, lack->isp_hdr, sizeof (iscsi_hdr_t));
956 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
965 ASSERT(lsm->icl_request_nvlist == NULL);
967 if (idm_pdu_list_to_nvlist(&lsm->icl_pdu_list,
968 &lsm->icl_request_nvlist, &error_detail) != IDM_STATUS_SUCCESS) {
975 ASSERT(lsm->icl_response_nvlist == NULL);
976 if (nvlist_alloc(&lsm->icl_response_nvlist, NV_UNIQUE_NAME,
1014 if ((lsm->icl_auth.ca_tgt_alias[0]) != '\0') {
1017 &lsm->icl_auth.ca_tgt_alias[0]);
1021 (uint64_t)lsm->icl_tpgt_tag);
1036 if (lsm->icl_request_nvlist != NULL) {
1037 nvlist_free(lsm->icl_request_nvlist);
1038 lsm->icl_request_nvlist = NULL;
1042 ASSERT(lsm->icl_login_resp_itb == NULL);
1043 if (lsm->icl_response_nvlist) {
1044 lsm->icl_login_resp_itb = idm_nvlist_to_itextbuf(
1045 lsm->icl_response_nvlist);
1046 if (lsm->icl_login_resp_itb == NULL) {
1053 nvlist_free(lsm->icl_response_nvlist);
1054 lsm->icl_response_nvlist = NULL;
1064 if (lsm->icl_request_nvlist != NULL) {
1065 nvlist_free(lsm->icl_request_nvlist);
1066 lsm->icl_request_nvlist = NULL;
1068 if (lsm->icl_response_nvlist != NULL) {
1069 nvlist_free(lsm->icl_response_nvlist);
1070 lsm->icl_response_nvlist = NULL;
1099 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
1111 if ((nvrc = nvlist_lookup_string(lsm->icl_request_nvlist,
1119 nvrc = nvlist_add_string(lsm->icl_negotiated_values, "InitiatorName",
1125 if ((nvrc = nvlist_lookup_string(lsm->icl_negotiated_values,
1129 lsm->icl_initiator_name = string_val;
1130 idm_conn_set_initiator_name(ict->ict_ic, lsm->icl_initiator_name);
1131 if ((nvrc = nvlist_remove(lsm->icl_request_nvlist,
1140 nvrc = nvlist_lookup_string(lsm->icl_request_nvlist,
1151 if ((nvrc = nvlist_add_string(lsm->icl_negotiated_values,
1155 if ((nvrc = nvlist_remove(lsm->icl_request_nvlist,
1164 lsm->icl_target_name = NULL;
1165 nvrc = nvlist_lookup_string(lsm->icl_request_nvlist,
1175 nvrc = nvlist_add_string(lsm->icl_negotiated_values,
1180 if ((nvrc = nvlist_lookup_string(lsm->icl_negotiated_values,
1184 lsm->icl_target_name = string_val;
1185 idm_conn_set_target_name(ict->ict_ic, lsm->icl_target_name);
1186 if ((nvrc = nvlist_remove(lsm->icl_request_nvlist,
1197 idm_conn_set_isid(ict->ict_ic, lsm->icl_isid);
1199 lsm->icl_tsih);
1202 (lsm->icl_initiator_name == NULL) ? "N/A" :
1203 lsm->icl_initiator_name);
1205 (lsm->icl_target_name == NULL) ? "N/A" :
1206 lsm->icl_target_name);
1285 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
1316 if (lsm->icl_target_name != NULL) {
1321 tgt = iscsit_tgt_lookup_locked(lsm->icl_target_name);
1332 lsm->icl_tpgt_tag = ISCSIT_DEFAULT_TPGT;
1369 lsm->icl_tpgt_tag = tpgt->tpgt_tag;
1400 existing_sess = iscsit_tgt_lookup_sess(tgt, lsm->icl_initiator_name,
1401 lsm->icl_isid, lsm->icl_tsih, lsm->icl_tpgt_tag);
1412 ((lsm->icl_tsih != ISCSI_UNSPEC_TSIH) || (existing_sess != NULL))) {
1424 if ((existing_sess == NULL) && (lsm->icl_tsih != ISCSI_UNSPEC_TSIH)) {
1432 if ((existing_sess != NULL) && (lsm->icl_tsih != 0) &&
1433 (existing_sess->ist_tsih != lsm->icl_tsih)) {
1445 ASSERT(lsm->icl_tsih == ISCSI_UNSPEC_TSIH);
1449 new_sess = iscsit_sess_create(tgt, ict, lsm->icl_cmdsn,
1450 lsm->icl_isid, lsm->icl_tpgt_tag, lsm->icl_initiator_name,
1451 lsm->icl_target_name, &error_class, &error_detail);
1474 if (lsm->icl_tsih == ISCSI_UNSPEC_TSIH) {
1569 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
1588 lsm->icl_auth.ca_method_valid_list[0] = AM_NONE;
1605 ini = iscsit_ini_lookup_locked(lsm->icl_initiator_name);
1633 lsm->icl_auth.ca_method_valid_list[i++] = AM_CHAP;
1634 lsm->icl_auth.ca_use_radius = B_TRUE;
1637 lsm->icl_auth.ca_method_valid_list[i++] = AM_CHAP;
1638 lsm->icl_auth.ca_use_radius = B_FALSE;
1642 lsm->icl_auth.ca_method_valid_list[i++] = AM_NONE;
1647 * node name. If lsm->icl_target_name == NULL then this is
1651 (void) strlcpy(lsm->icl_auth.ca_ini_chapuser,
1652 lsm->icl_initiator_name,
1655 (void) strlcpy(lsm->icl_auth.ca_ini_chapuser, chapuser,
1658 if ((lsm->icl_target_name != NULL) &&
1660 (void) strlcpy(lsm->icl_auth.ca_tgt_chapuser,
1661 lsm->icl_target_name,
1664 (void) strlcpy(lsm->icl_auth.ca_tgt_chapuser,
1673 lsm->icl_auth.ca_ini_chapsecretlen = 0;
1677 lsm->icl_auth.ca_ini_chapsecret, iscsitAuthStringMaxLength,
1678 &lsm->icl_auth.ca_ini_chapsecretlen) != 0) {
1680 " for initiator %s", lsm->icl_initiator_name);
1681 lsm->icl_auth.ca_ini_chapsecretlen = 0;
1685 lsm->icl_auth.ca_tgt_chapsecretlen = 0;
1689 lsm->icl_auth.ca_tgt_chapsecret, iscsitAuthStringMaxLength,
1690 &lsm->icl_auth.ca_tgt_chapsecretlen) != 0) {
1692 " for target %s", lsm->icl_target_name);
1693 lsm->icl_auth.ca_tgt_chapsecretlen = 0;
1697 lsm->icl_auth.ca_radius_secretlen = 0;
1701 lsm->icl_auth.ca_radius_secret, iscsitAuthStringMaxLength,
1702 &lsm->icl_auth.ca_radius_secretlen) != 0) {
1704 lsm->icl_auth.ca_radius_secretlen = 0;
1711 (void) strlcpy(lsm->icl_auth.ca_tgt_alias, targetalias,
1717 * Decode RADIUS server value int lsm->icl_auth.ca_radius_server
1720 ((lsm->icl_auth.ca_radius_secretlen == 0) ||
1723 &lsm->icl_auth.ca_radius_server,
1727 "configured.", lsm->icl_target_name);
1732 (lsm->icl_auth.ca_ini_chapsecretlen == 0)) {
1820 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
1822 iscsi_login_rsp_hdr_t *lh_resp = lsm->icl_login_resp_tmpl;
1831 if ((csg_req != lsm->icl_login_csg) &&
1832 (lsm->icl_login_state != ILS_LOGIN_INIT)) {
1901 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
1915 kvrc = idm_negotiate_key_values(ict->ict_ic, lsm->icl_request_nvlist,
1916 lsm->icl_response_nvlist, lsm->icl_negotiated_values);
1926 lsm->icl_login_transit = B_FALSE;
1931 lsm->icl_login_csg == ISCSI_OP_PARMS_NEGOTIATION_STAGE) {
1940 nvp = nvlist_next_nvpair(lsm->icl_request_nvlist, NULL);
1942 next_nvp = nvlist_next_nvpair(lsm->icl_request_nvlist, nvp);
1959 if (nvlist_lookup_nvpair(lsm->icl_negotiated_values,
1988 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
1989 conn_auth_t *auth = &lsm->icl_auth;
2000 if (lsm->icl_login_csg == ISCSI_SECURITY_NEGOTIATION_STAGE) {
2039 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
2049 if (lsm->icl_login_resp_itb) {
2054 lsm->icl_login_resp_buf = idm_pdu_init_text_data(
2055 login_resp, lsm->icl_login_resp_itb,
2057 lsm->icl_login_resp_buf, &text_transit);
2060 idm_itextbuf_free(lsm->icl_login_resp_itb);
2061 lsm->icl_login_resp_itb = NULL;
2062 lsm->icl_login_resp_buf = NULL;
2076 bcopy(lsm->icl_login_resp_tmpl,
2082 lh->status_class = lsm->icl_login_resp_err_class;
2083 lh->status_detail = lsm->icl_login_resp_err_detail;
2086 lh->flags |= lsm->icl_login_csg << 2;
2090 if (lsm->icl_login_transit &&
2091 lsm->icl_auth_pass != 0) {
2100 lh->flags |= lsm->icl_login_nsg;
2101 lsm->icl_login_csg = lsm->icl_login_nsg;
2109 lsm->icl_login_csg == ISCSI_FULL_FEATURE_PHASE) {
2122 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
2139 switch (lsm->icl_login_csg) {
2164 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
2172 nvrc = nvlist_add_nvpair(lsm->icl_negotiated_values, nvp);
2180 nvrc = nvlist_add_nvpair(lsm->icl_negotiated_values, nvp);
2193 nvrc = nvlist_add_nvpair(lsm->icl_negotiated_values, nvp);
2219 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
2220 iscsit_auth_client_t *client = &lsm->icl_auth_client;
2406 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
2410 nvrc = nvlist_add_uint64(lsm->icl_response_nvlist,
2421 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
2425 nvrc = nvlist_add_string(lsm->icl_response_nvlist,
2436 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
2468 nvrc = nvlist_add_string(lsm->icl_negotiated_values,
2474 lsm->icl_response_nvlist,
2494 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
2499 nvrc = nvlist_add_nvpair(lsm->icl_negotiated_values, nvp);
2505 lsm->icl_negotiated_values,
2507 lsm->icl_login_transit = B_FALSE;
2510 nvrc = nvlist_add_nvpair(lsm->icl_negotiated_values,
2517 lsm->icl_response_nvlist, ikvx->ik_key_name, value);
2532 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
2540 nvrc = nvlist_add_nvpair(lsm->icl_negotiated_values, nvp);
2546 nvrc = nvlist_add_uint64(lsm->icl_negotiated_values,
2548 lsm->icl_login_transit = B_FALSE;
2551 nvrc = nvlist_add_nvpair(lsm->icl_negotiated_values,
2557 nvrc = nvlist_add_uint64(lsm->icl_response_nvlist,
2570 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
2577 idm_notice_key_values(ict->ict_ic, lsm->icl_negotiated_values);
2582 if ((nvrc = nvlist_lookup_string(lsm->icl_negotiated_values,
2593 if ((nvrc = nvlist_lookup_string(lsm->icl_negotiated_values,
2605 if ((nvrc = nvlist_lookup_boolean_value(lsm->icl_negotiated_values,
2611 if ((nvrc = nvlist_lookup_boolean_value(lsm->icl_negotiated_values,
2617 if ((nvrc = nvlist_lookup_boolean_value(lsm->icl_negotiated_values,
2623 if ((nvrc = nvlist_lookup_boolean_value(lsm->icl_negotiated_values,
2629 if ((nvrc = nvlist_lookup_uint64(lsm->icl_negotiated_values,
2635 if ((nvrc = nvlist_lookup_uint64(lsm->icl_negotiated_values,
2641 if ((nvrc = nvlist_lookup_uint64(lsm->icl_negotiated_values,
2647 if ((nvrc = nvlist_lookup_uint64(lsm->icl_negotiated_values,
2653 if ((nvrc = nvlist_lookup_uint64(lsm->icl_negotiated_values,
2659 if ((nvrc = nvlist_lookup_uint64(lsm->icl_negotiated_values,
2665 if ((nvrc = nvlist_lookup_uint64(lsm->icl_negotiated_values,
2671 if ((nvrc = nvlist_lookup_uint64(lsm->icl_negotiated_values,
2684 iscsit_conn_login_t *lsm = &ict->ict_login_sm;
2700 lsm->icl_response_nvlist);