1 /** 2 * FreeRDP: A Remote Desktop Protocol Implementation 3 * Connection Sequence 4 * 5 * Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com> 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 */ 19 20 #ifndef FREERDP_LIB_CORE_CONNECTION_H 21 #define FREERDP_LIB_CORE_CONNECTION_H 22 23 #include "rdp.h" 24 #include "tpkt.h" 25 #include "tpdu.h" 26 #include "nego.h" 27 #include "mcs.h" 28 #include "activation.h" 29 30 #include <freerdp/settings.h> 31 #include <freerdp/api.h> 32 33 enum CONNECTION_STATE 34 { 35 CONNECTION_STATE_INITIAL, 36 CONNECTION_STATE_NEGO, 37 CONNECTION_STATE_NLA, 38 CONNECTION_STATE_MCS_CONNECT, 39 CONNECTION_STATE_MCS_ERECT_DOMAIN, 40 CONNECTION_STATE_MCS_ATTACH_USER, 41 CONNECTION_STATE_MCS_CHANNEL_JOIN, 42 CONNECTION_STATE_RDP_SECURITY_COMMENCEMENT, 43 CONNECTION_STATE_SECURE_SETTINGS_EXCHANGE, 44 CONNECTION_STATE_CONNECT_TIME_AUTO_DETECT, 45 CONNECTION_STATE_LICENSING, 46 CONNECTION_STATE_MULTITRANSPORT_BOOTSTRAPPING, 47 CONNECTION_STATE_CAPABILITIES_EXCHANGE, 48 CONNECTION_STATE_FINALIZATION, 49 CONNECTION_STATE_ACTIVE 50 }; 51 52 enum CLIENT_CONNECTION_STATE 53 { 54 CLIENT_STATE_INITIAL, 55 CLIENT_STATE_PRECONNECT_PASSED, 56 CLIENT_STATE_POSTCONNECT_PASSED 57 }; 58 59 FREERDP_LOCAL BOOL rdp_client_connect(rdpRdp* rdp); 60 FREERDP_LOCAL BOOL rdp_client_disconnect(rdpRdp* rdp); 61 FREERDP_LOCAL BOOL rdp_client_disconnect_and_clear(rdpRdp* rdp); 62 FREERDP_LOCAL BOOL rdp_client_reconnect(rdpRdp* rdp); 63 FREERDP_LOCAL BOOL rdp_client_redirect(rdpRdp* rdp); 64 FREERDP_LOCAL BOOL rdp_client_connect_mcs_channel_join_confirm(rdpRdp* rdp, wStream* s); 65 FREERDP_LOCAL BOOL rdp_client_connect_auto_detect(rdpRdp* rdp, wStream* s); 66 FREERDP_LOCAL int rdp_client_connect_license(rdpRdp* rdp, wStream* s); 67 FREERDP_LOCAL int rdp_client_connect_demand_active(rdpRdp* rdp, wStream* s); 68 FREERDP_LOCAL int rdp_client_transition_to_state(rdpRdp* rdp, int state); 69 FREERDP_LOCAL const char* rdp_client_connection_state_string(int state); 70 FREERDP_LOCAL int rdp_client_get_state(rdpRdp* rdp); 71 72 FREERDP_LOCAL BOOL rdp_server_accept_nego(rdpRdp* rdp, wStream* s); 73 FREERDP_LOCAL BOOL rdp_server_accept_mcs_connect_initial(rdpRdp* rdp, wStream* s); 74 FREERDP_LOCAL BOOL rdp_server_accept_mcs_erect_domain_request(rdpRdp* rdp, wStream* s); 75 FREERDP_LOCAL BOOL rdp_server_accept_mcs_attach_user_request(rdpRdp* rdp, wStream* s); 76 FREERDP_LOCAL BOOL rdp_server_accept_mcs_channel_join_request(rdpRdp* rdp, wStream* s); 77 FREERDP_LOCAL BOOL rdp_server_accept_confirm_active(rdpRdp* rdp, wStream* s, UINT16 pduLength); 78 FREERDP_LOCAL BOOL rdp_server_establish_keys(rdpRdp* rdp, wStream* s); 79 FREERDP_LOCAL BOOL rdp_server_reactivate(rdpRdp* rdp); 80 FREERDP_LOCAL int rdp_server_transition_to_state(rdpRdp* rdp, int state); 81 FREERDP_LOCAL const char* rdp_server_connection_state_string(int state); 82 83 #endif /* FREERDP_LIB_CORE_CONNECTION_H */ 84