Lines Matching refs:session

423 	tmout.tv_sec = intf->session->timeout;  in ipmi_lan_recv_packet()
449 tmout.tv_sec = intf->session->timeout; in ipmi_lan_recv_packet()
616 struct ipmi_session * session = intf->session; in ipmi_lan_poll_single() local
663 read_session_data(rsp, &offset, intf->session); in ipmi_lan_poll_single()
665 if (lanplus_has_valid_auth_code(rsp, intf->session) == 0) { in ipmi_lan_poll_single()
670 if ((session->v2_data.session_state == LANPLUS_STATE_ACTIVE) && in ipmi_lan_poll_single()
671 (rsp->session.authtype == IPMI_SESSION_AUTHTYPE_RMCP_PLUS) && in ipmi_lan_poll_single()
672 (rsp->session.bEncrypted)) { in ipmi_lan_poll_single()
673 lanplus_decrypt_payload(session->v2_data.crypt_alg, in ipmi_lan_poll_single()
674 session->v2_data.k2, in ipmi_lan_poll_single()
676 rsp->session.msglen, in ipmi_lan_poll_single()
680 payload_size = rsp->session.msglen; in ipmi_lan_poll_single()
686 if (rsp->session.payloadtype == IPMI_PAYLOAD_TYPE_IPMI) { in ipmi_lan_poll_single()
698 val2str(rsp->session.authtype, ipmi_authtype_session_vals)); in ipmi_lan_poll_single()
700 val2str(rsp->session.payloadtype, plus_payload_types_vals)); in ipmi_lan_poll_single()
702 (long)rsp->session.id); in ipmi_lan_poll_single()
704 (long)rsp->session.seq); in ipmi_lan_poll_single()
706 rsp->session.msglen); in ipmi_lan_poll_single()
794 } else if (rsp->session.payloadtype == in ipmi_lan_poll_single()
796 if (session->v2_data.session_state != in ipmi_lan_poll_single()
807 } else if (rsp->session.payloadtype == IPMI_PAYLOAD_TYPE_RAKP_2) { in ipmi_lan_poll_single()
808 if (session->v2_data.session_state != LANPLUS_STATE_RAKP_1_SENT) { in ipmi_lan_poll_single()
813 read_rakp2_message(rsp, offset, session->v2_data.auth_alg); in ipmi_lan_poll_single()
817 } else if (rsp->session.payloadtype == IPMI_PAYLOAD_TYPE_RAKP_4) { in ipmi_lan_poll_single()
818 if (session->v2_data.session_state != LANPLUS_STATE_RAKP_3_SENT) { in ipmi_lan_poll_single()
823 read_rakp4_message(rsp, offset, session->v2_data.auth_alg); in ipmi_lan_poll_single()
827 } else if (rsp->session.payloadtype == IPMI_PAYLOAD_TYPE_SOL) { in ipmi_lan_poll_single()
831 if (session->v2_data.session_state != LANPLUS_STATE_ACTIVE) { in ipmi_lan_poll_single()
849 rsp->session.payloadtype); in ipmi_lan_poll_single()
1114 rsp->session.authtype = rsp->data[*offset]; in read_session_data()
1116 if (rsp->session.authtype == IPMI_SESSION_AUTHTYPE_RMCP_PLUS) in read_session_data()
1148 rsp->session.authtype = rsp->data[(*offset)++]; in read_session_data_v2x()
1150 rsp->session.bEncrypted = (rsp->data[*offset] & 0x80 ? 1 : 0); in read_session_data_v2x()
1151 rsp->session.bAuthenticated = (rsp->data[*offset] & 0x40 ? 1 : 0); in read_session_data_v2x()
1155 rsp->session.payloadtype = rsp->data[(*offset)++] & 0x3F; in read_session_data_v2x()
1158 memcpy(&rsp->session.id, rsp->data + *offset, 4); in read_session_data_v2x()
1161 rsp->session.id = BSWAP_32(rsp->session.id); in read_session_data_v2x()
1169 (rsp->session.id != s->v2_data.console_id)) in read_session_data_v2x()
1173 rsp->session.id, s->v2_data.console_id); in read_session_data_v2x()
1179 memcpy(&rsp->session.seq, rsp->data + *offset, 4); in read_session_data_v2x()
1182 rsp->session.seq = BSWAP_32(rsp->session.seq); in read_session_data_v2x()
1185 memcpy(&rsp->session.msglen, rsp->data + *offset, 2); in read_session_data_v2x()
1188 rsp->session.msglen = BSWAP_16(rsp->session.msglen); in read_session_data_v2x()
1216 rsp->session.payloadtype = IPMI_PAYLOAD_TYPE_IPMI; in read_session_data_v15()
1218 rsp->session.authtype = rsp->data[(*offset)++]; in read_session_data_v15()
1221 rsp->session.bEncrypted = 0; in read_session_data_v15()
1222 rsp->session.bAuthenticated = 0; in read_session_data_v15()
1228 rsp->session.msglen = rsp->data[(*offset)++]; in read_session_data_v15()
1587 struct ipmi_session * session = intf->session; in ipmi_lanplus_build_v2x_msg() local
1637 if (session->v2_data.session_state == LANPLUS_STATE_ACTIVE) in ipmi_lanplus_build_v2x_msg()
1640 ((session->v2_data.crypt_alg != IPMI_CRYPT_NONE )? 0x80 : 0x00); in ipmi_lanplus_build_v2x_msg()
1642 ((session->v2_data.integrity_alg != IPMI_INTEGRITY_NONE)? 0x40 : 0x00); in ipmi_lanplus_build_v2x_msg()
1645 if (session->v2_data.session_state == LANPLUS_STATE_ACTIVE) in ipmi_lanplus_build_v2x_msg()
1648 msg[IPMI_LANPLUS_OFFSET_SESSION_ID ] = session->v2_data.bmc_id & 0xff; in ipmi_lanplus_build_v2x_msg()
1649 msg[IPMI_LANPLUS_OFFSET_SESSION_ID + 1] = (session->v2_data.bmc_id >> 8) & 0xff; in ipmi_lanplus_build_v2x_msg()
1650 msg[IPMI_LANPLUS_OFFSET_SESSION_ID + 2] = (session->v2_data.bmc_id >> 16) & 0xff; in ipmi_lanplus_build_v2x_msg()
1651 msg[IPMI_LANPLUS_OFFSET_SESSION_ID + 3] = (session->v2_data.bmc_id >> 24) & 0xff; in ipmi_lanplus_build_v2x_msg()
1654 msg[IPMI_LANPLUS_OFFSET_SEQUENCE_NUM ] = session->out_seq & 0xff; in ipmi_lanplus_build_v2x_msg()
1655 msg[IPMI_LANPLUS_OFFSET_SEQUENCE_NUM + 1] = (session->out_seq >> 8) & 0xff; in ipmi_lanplus_build_v2x_msg()
1656 msg[IPMI_LANPLUS_OFFSET_SEQUENCE_NUM + 2] = (session->out_seq >> 16) & 0xff; in ipmi_lanplus_build_v2x_msg()
1657 msg[IPMI_LANPLUS_OFFSET_SEQUENCE_NUM + 3] = (session->out_seq >> 24) & 0xff; in ipmi_lanplus_build_v2x_msg()
1737 if (session->v2_data.session_state == LANPLUS_STATE_ACTIVE) in ipmi_lanplus_build_v2x_msg()
1740 lanplus_encrypt_payload(session->v2_data.crypt_alg, /* input */ in ipmi_lanplus_build_v2x_msg()
1741 session->v2_data.k2, /* input */ in ipmi_lanplus_build_v2x_msg()
1761 if ((session->v2_data.session_state == LANPLUS_STATE_ACTIVE) && in ipmi_lanplus_build_v2x_msg()
1762 (session->v2_data.integrity_alg != IPMI_INTEGRITY_NONE)) in ipmi_lanplus_build_v2x_msg()
1820 lanplus_HMAC(session->v2_data.integrity_alg, in ipmi_lanplus_build_v2x_msg()
1821 session->v2_data.k1, /* key */ in ipmi_lanplus_build_v2x_msg()
1841 ++(session->out_seq); in ipmi_lanplus_build_v2x_msg()
1842 if (!session->out_seq) in ipmi_lanplus_build_v2x_msg()
1843 ++(session->out_seq); in ipmi_lanplus_build_v2x_msg()
1969 struct ipmi_session * session = intf->session; in ipmi_lanplus_build_v15_ipmi_cmd() local
1997 msg[len++] = session->out_seq & 0xff; in ipmi_lanplus_build_v15_ipmi_cmd()
1998 msg[len++] = (session->out_seq >> 8) & 0xff; in ipmi_lanplus_build_v15_ipmi_cmd()
1999 msg[len++] = (session->out_seq >> 16) & 0xff; in ipmi_lanplus_build_v15_ipmi_cmd()
2000 msg[len++] = (session->out_seq >> 24) & 0xff; in ipmi_lanplus_build_v15_ipmi_cmd()
2033 (long)session->out_seq); in ipmi_lanplus_build_v15_ipmi_cmd()
2071 (rsp->session.authtype == IPMI_SESSION_AUTHTYPE_RMCP_PLUS) && in is_sol_packet()
2072 (rsp->session.payloadtype == IPMI_PAYLOAD_TYPE_SOL)); in is_sol_packet()
2106 struct ipmi_session * session = intf->session; in ipmi_lanplus_send_payload() local
2120 saved_timeout = session->timeout; in ipmi_lanplus_send_payload()
2157 (session->v2_data.bmc_id == 0)) // jme - check in ipmi_lanplus_send_payload()
2182 assert(session->v2_data.session_state == LANPLUS_STATE_PRESESSION in ipmi_lanplus_send_payload()
2183 || session->v2_data.session_state == LANPLUS_STATE_OPEN_SESSION_SENT); in ipmi_lanplus_send_payload()
2196 assert(session->v2_data.session_state == in ipmi_lanplus_send_payload()
2210 assert(session->v2_data.session_state == in ipmi_lanplus_send_payload()
2224 assert(session->v2_data.session_state == LANPLUS_STATE_ACTIVE); in ipmi_lanplus_send_payload()
2257 session->v2_data.session_state = LANPLUS_STATE_OPEN_SESSION_SENT; in ipmi_lanplus_send_payload()
2262 session->v2_data.session_state = LANPLUS_STATE_RAKP_1_SENT; in ipmi_lanplus_send_payload()
2269 session->v2_data.session_state = LANPLUS_STATE_RAKP_3_SENT; in ipmi_lanplus_send_payload()
2297 intf->session->sol_data.sol_input_handler(rsp); in ipmi_lanplus_send_payload()
2326 xmit = ((time(NULL) - ltime) >= session->timeout); in ipmi_lanplus_send_payload()
2332 session->timeout++; in ipmi_lanplus_send_payload()
2337 session->timeout = saved_timeout; in ipmi_lanplus_send_payload()
2399 if (intf->session->sol_data.sequence_number > 0x0F) in set_sol_packet_sequence_number()
2400 intf->session->sol_data.sequence_number = 1; in set_sol_packet_sequence_number()
2403 intf->session->sol_data.sequence_number++; in set_sol_packet_sequence_number()
2458 intf->session->sol_data.sol_input_handler(rs); in ipmi_lanplus_send_sol()
2506 (rsp->session.authtype == IPMI_SESSION_AUTHTYPE_RMCP_PLUS) && in check_sol_packet_for_new_data()
2507 (rsp->session.payloadtype == IPMI_PAYLOAD_TYPE_SOL)) in check_sol_packet_for_new_data()
2564 (rsp->session.authtype == IPMI_SESSION_AUTHTYPE_RMCP_PLUS) && in ack_sol_packet()
2565 (rsp->session.payloadtype == IPMI_PAYLOAD_TYPE_SOL) && in ack_sol_packet()
2605 if (rsp && rsp->session.authtype != 0) in ipmi_lanplus_recv_sol()
2724 if (intf->session == NULL in ipmi_close_session_cmd()
2725 || intf->session->v2_data.session_state != LANPLUS_STATE_ACTIVE) in ipmi_close_session_cmd()
2733 bmc_session_lsbf = intf->session->v2_data.bmc_id; in ipmi_close_session_cmd()
2758 (long)intf->session->v2_data.bmc_id); in ipmi_close_session_cmd()
2768 (long)intf->session->v2_data.bmc_id); in ipmi_close_session_cmd()
2787 struct ipmi_session * session = intf->session; in ipmi_lanplus_open_session() local
2814 session->v2_data.console_id = 0xA0A2A3A4; in ipmi_lanplus_open_session()
2815 msg[4] = session->v2_data.console_id & 0xff; in ipmi_lanplus_open_session()
2816 msg[5] = (session->v2_data.console_id >> 8) & 0xff; in ipmi_lanplus_open_session()
2817 msg[6] = (session->v2_data.console_id >> 16) & 0xff; in ipmi_lanplus_open_session()
2818 msg[7] = (session->v2_data.console_id >> 24) & 0xff; in ipmi_lanplus_open_session()
2822 &(session->v2_data.requested_auth_alg), in ipmi_lanplus_open_session()
2823 &(session->v2_data.requested_integrity_alg), in ipmi_lanplus_open_session()
2824 &(session->v2_data.requested_crypt_alg))) in ipmi_lanplus_open_session()
2841 msg[12] = session->v2_data.requested_auth_alg; in ipmi_lanplus_open_session()
2853 msg[20] = session->v2_data.requested_integrity_alg; in ipmi_lanplus_open_session()
2865 msg[28] = session->v2_data.requested_crypt_alg; in ipmi_lanplus_open_session()
2897 session->v2_data.console_id) { in ipmi_lanplus_open_session()
2902 session->v2_data.max_priv_level = in ipmi_lanplus_open_session()
2904 session->v2_data.bmc_id = in ipmi_lanplus_open_session()
2906 session->v2_data.auth_alg = in ipmi_lanplus_open_session()
2908 session->v2_data.integrity_alg = in ipmi_lanplus_open_session()
2910 session->v2_data.crypt_alg = in ipmi_lanplus_open_session()
2912 session->v2_data.session_state = in ipmi_lanplus_open_session()
2920 session->v2_data.requested_auth_alg) in ipmi_lanplus_open_session()
2925 session->v2_data.requested_auth_alg); in ipmi_lanplus_open_session()
2929 session->v2_data.requested_integrity_alg) in ipmi_lanplus_open_session()
2934 session->v2_data.requested_integrity_alg); in ipmi_lanplus_open_session()
2938 session->v2_data.requested_crypt_alg) in ipmi_lanplus_open_session()
2943 session->v2_data.requested_crypt_alg); in ipmi_lanplus_open_session()
2975 struct ipmi_session * session = intf->session; in ipmi_lanplus_rakp1() local
2998 msg[4] = session->v2_data.bmc_id & 0xff; in ipmi_lanplus_rakp1()
2999 msg[5] = (session->v2_data.bmc_id >> 8) & 0xff; in ipmi_lanplus_rakp1()
3000 msg[6] = (session->v2_data.bmc_id >> 16) & 0xff; in ipmi_lanplus_rakp1()
3001 msg[7] = (session->v2_data.bmc_id >> 24) & 0xff; in ipmi_lanplus_rakp1()
3005 if (lanplus_rand(session->v2_data.console_rand, 16)) in ipmi_lanplus_rakp1()
3014 memcpy(msg + 8, session->v2_data.console_rand, 16); in ipmi_lanplus_rakp1()
3020 printbuf(session->v2_data.console_rand, 16, in ipmi_lanplus_rakp1()
3028 session->v2_data.requested_role = msg[24]; in ipmi_lanplus_rakp1()
3071 session->v2_data.session_state = LANPLUS_STATE_RAKP_2_RECEIVED; in ipmi_lanplus_rakp1()
3074 lanplus_dump_rakp2_message(rsp, session->v2_data.auth_alg); in ipmi_lanplus_rakp1()
3088 memcpy(session->v2_data.bmc_rand, rsp->payload.rakp2_message.bmc_rand, 16); in ipmi_lanplus_rakp1()
3089 memcpy(session->v2_data.bmc_guid, rsp->payload.rakp2_message.bmc_guid, 16); in ipmi_lanplus_rakp1()
3092 printbuf(session->v2_data.bmc_rand, 16, "bmc_rand"); in ipmi_lanplus_rakp1()
3098 if (! lanplus_rakp2_hmac_matches(session, in ipmi_lanplus_rakp1()
3104 session->v2_data.rakp2_return_code = IPMI_RAKP_STATUS_INVALID_INTEGRITY_CHECK_VALUE; in ipmi_lanplus_rakp1()
3110 session->v2_data.rakp2_return_code = IPMI_RAKP_STATUS_NO_ERRORS; in ipmi_lanplus_rakp1()
3139 struct ipmi_session * session = intf->session; in ipmi_lanplus_rakp3() local
3143 assert(session->v2_data.session_state == LANPLUS_STATE_RAKP_2_RECEIVED); in ipmi_lanplus_rakp3()
3157 msg[1] = session->v2_data.rakp2_return_code; in ipmi_lanplus_rakp3()
3163 msg[4] = session->v2_data.bmc_id & 0xff; in ipmi_lanplus_rakp3()
3164 msg[5] = (session->v2_data.bmc_id >> 8) & 0xff; in ipmi_lanplus_rakp3()
3165 msg[6] = (session->v2_data.bmc_id >> 16) & 0xff; in ipmi_lanplus_rakp3()
3166 msg[7] = (session->v2_data.bmc_id >> 24) & 0xff; in ipmi_lanplus_rakp3()
3178 if (session->v2_data.rakp2_return_code == IPMI_RAKP_STATUS_NO_ERRORS) in ipmi_lanplus_rakp3()
3182 if (lanplus_generate_rakp3_authcode(msg + 8, session, &auth_length, intf)) in ipmi_lanplus_rakp3()
3197 if (lanplus_generate_sik(session, intf)) in ipmi_lanplus_rakp3()
3205 else if (lanplus_generate_k1(session)) in ipmi_lanplus_rakp3()
3213 else if (lanplus_generate_k2(session)) in ipmi_lanplus_rakp3()
3229 if (session->v2_data.rakp2_return_code != IPMI_RAKP_STATUS_NO_ERRORS) in ipmi_lanplus_rakp3()
3249 lanplus_dump_rakp4_message(rsp, session->v2_data.auth_alg); in ipmi_lanplus_rakp3()
3263 if (lanplus_rakp4_hmac_matches(session, in ipmi_lanplus_rakp3()
3268 session->v2_data.session_state = LANPLUS_STATE_ACTIVE; in ipmi_lanplus_rakp3()
3290 if (!intf->abort && intf->session) in ipmi_lanplus_close()
3364 struct ipmi_session *session; in ipmi_lanplus_open() local
3393 session = (struct ipmi_session *)malloc(sizeof (struct ipmi_session)); in ipmi_lanplus_open()
3394 if (!session) { in ipmi_lanplus_open()
3399 intf->session = session; in ipmi_lanplus_open()
3402 memset(session, 0, sizeof(struct ipmi_session)); in ipmi_lanplus_open()
3403 session->timeout = params->timeout; in ipmi_lanplus_open()
3404 memcpy(&session->authcode, &params->authcode_set, sizeof(session->authcode)); in ipmi_lanplus_open()
3405 session->v2_data.auth_alg = IPMI_AUTH_RAKP_NONE; in ipmi_lanplus_open()
3406 session->v2_data.crypt_alg = IPMI_CRYPT_NONE; in ipmi_lanplus_open()
3407 session->sol_data.sequence_number = 1; in ipmi_lanplus_open()
3434 session->v2_data.session_state = LANPLUS_STATE_PRESESSION; in ipmi_lanplus_open()
3602 intf->session->sol_data.sol_input_handler(rsp); in ipmi_lanplus_keepalive()