1 /* 2 * This file is part of the SSH Library 3 * 4 * Copyright (c) 2009 by Aris Adamantiadis 5 * 6 * The SSH Library is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU Lesser General Public License as published by 8 * the Free Software Foundation; either version 2.1 of the License, or (at your 9 * option) any later version. 10 * 11 * The SSH Library is distributed in the hope that it will be useful, but 12 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 13 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 14 * License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public License 17 * along with the SSH Library; see the file COPYING. If not, write to 18 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 19 * MA 02111-1307, USA. 20 */ 21 22 #ifndef MESSAGES_H_ 23 #define MESSAGES_H_ 24 25 #include "config.h" 26 27 struct ssh_auth_request { 28 char *username; 29 int method; 30 char *password; 31 struct ssh_key_struct *pubkey; 32 char signature_state; 33 char kbdint_response; 34 }; 35 36 struct ssh_channel_request_open { 37 int type; 38 uint32_t sender; 39 uint32_t window; 40 uint32_t packet_size; 41 char *originator; 42 uint16_t originator_port; 43 char *destination; 44 uint16_t destination_port; 45 }; 46 47 struct ssh_service_request { 48 char *service; 49 }; 50 51 struct ssh_global_request { 52 int type; 53 uint8_t want_reply; 54 char *bind_address; 55 uint16_t bind_port; 56 }; 57 58 struct ssh_channel_request { 59 int type; 60 ssh_channel channel; 61 uint8_t want_reply; 62 /* pty-req type specifics */ 63 char *TERM; 64 uint32_t width; 65 uint32_t height; 66 uint32_t pxwidth; 67 uint32_t pxheight; 68 ssh_string modes; 69 70 /* env type request */ 71 char *var_name; 72 char *var_value; 73 /* exec type request */ 74 char *command; 75 /* subsystem */ 76 char *subsystem; 77 78 /* X11 */ 79 uint8_t x11_single_connection; 80 const char *x11_auth_protocol; 81 const char *x11_auth_cookie; 82 uint32_t x11_screen_number; 83 }; 84 85 struct ssh_message_struct { 86 ssh_session session; 87 int type; 88 struct ssh_auth_request auth_request; 89 struct ssh_channel_request_open channel_request_open; 90 struct ssh_channel_request channel_request; 91 struct ssh_service_request service_request; 92 struct ssh_global_request global_request; 93 }; 94 95 SSH_PACKET_CALLBACK(ssh_packet_channel_open); 96 SSH_PACKET_CALLBACK(ssh_packet_service_request); 97 SSH_PACKET_CALLBACK(ssh_packet_userauth_request); 98 SSH_PACKET_CALLBACK(ssh_packet_global_request); 99 100 int ssh_message_handle_channel_request(ssh_session session, ssh_channel channel, ssh_buffer packet, 101 const char *request, uint8_t want_reply); 102 void ssh_message_queue(ssh_session session, ssh_message message); 103 ssh_message ssh_message_pop_head(ssh_session session); 104 105 #endif /* MESSAGES_H_ */ 106