1*f374ba41SEd Maste /* $OpenBSD: session.h,v 1.37 2023/01/06 02:39:59 djm Exp $ */ 21e8db6e2SBrian Feldman 3b66f2d16SKris Kennaway /* 4ae1f160dSDag-Erling Smørgrav * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 5b66f2d16SKris Kennaway * 6b66f2d16SKris Kennaway * Redistribution and use in source and binary forms, with or without 7b66f2d16SKris Kennaway * modification, are permitted provided that the following conditions 8b66f2d16SKris Kennaway * are met: 9b66f2d16SKris Kennaway * 1. Redistributions of source code must retain the above copyright 10b66f2d16SKris Kennaway * notice, this list of conditions and the following disclaimer. 11b66f2d16SKris Kennaway * 2. Redistributions in binary form must reproduce the above copyright 12b66f2d16SKris Kennaway * notice, this list of conditions and the following disclaimer in the 13b66f2d16SKris Kennaway * documentation and/or other materials provided with the distribution. 14b66f2d16SKris Kennaway * 15b66f2d16SKris Kennaway * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16b66f2d16SKris Kennaway * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17b66f2d16SKris Kennaway * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18b66f2d16SKris Kennaway * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19b66f2d16SKris Kennaway * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20b66f2d16SKris Kennaway * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21b66f2d16SKris Kennaway * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22b66f2d16SKris Kennaway * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23b66f2d16SKris Kennaway * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24b66f2d16SKris Kennaway * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25b66f2d16SKris Kennaway */ 26a04a10f8SKris Kennaway #ifndef SESSION_H 27a04a10f8SKris Kennaway #define SESSION_H 28a04a10f8SKris Kennaway 29545d5ecaSDag-Erling Smørgrav #define TTYSZ 64 30545d5ecaSDag-Erling Smørgrav typedef struct Session Session; 31545d5ecaSDag-Erling Smørgrav struct Session { 32545d5ecaSDag-Erling Smørgrav int used; 33545d5ecaSDag-Erling Smørgrav int self; 34d4af9e69SDag-Erling Smørgrav int next_unused; 35545d5ecaSDag-Erling Smørgrav struct passwd *pw; 36545d5ecaSDag-Erling Smørgrav Authctxt *authctxt; 37545d5ecaSDag-Erling Smørgrav pid_t pid; 382f513db7SEd Maste int forced; 39333ee039SDag-Erling Smørgrav 40545d5ecaSDag-Erling Smørgrav /* tty */ 41545d5ecaSDag-Erling Smørgrav char *term; 42545d5ecaSDag-Erling Smørgrav int ptyfd, ttyfd, ptymaster; 43a82e551fSDag-Erling Smørgrav u_int row, col, xpixel, ypixel; 44545d5ecaSDag-Erling Smørgrav char tty[TTYSZ]; 45333ee039SDag-Erling Smørgrav 46545d5ecaSDag-Erling Smørgrav /* X11 */ 47a82e551fSDag-Erling Smørgrav u_int display_number; 48545d5ecaSDag-Erling Smørgrav char *display; 49a82e551fSDag-Erling Smørgrav u_int screen; 50545d5ecaSDag-Erling Smørgrav char *auth_display; 51545d5ecaSDag-Erling Smørgrav char *auth_proto; 52545d5ecaSDag-Erling Smørgrav char *auth_data; 53545d5ecaSDag-Erling Smørgrav int single_connection; 54333ee039SDag-Erling Smørgrav 55545d5ecaSDag-Erling Smørgrav int chanid; 56d4ecd108SDag-Erling Smørgrav int *x11_chanids; 57545d5ecaSDag-Erling Smørgrav int is_subsystem; 58f7167e0eSDag-Erling Smørgrav char *subsys; 59d4ecd108SDag-Erling Smørgrav u_int num_env; 6021e764dfSDag-Erling Smørgrav struct { 6121e764dfSDag-Erling Smørgrav char *name; 6221e764dfSDag-Erling Smørgrav char *val; 6321e764dfSDag-Erling Smørgrav } *env; 64545d5ecaSDag-Erling Smørgrav }; 65545d5ecaSDag-Erling Smørgrav 664f52dfbbSDag-Erling Smørgrav void do_authenticated(struct ssh *, Authctxt *); 674f52dfbbSDag-Erling Smørgrav void do_cleanup(struct ssh *, Authctxt *); 68a04a10f8SKris Kennaway 69ae1f160dSDag-Erling Smørgrav int session_open(Authctxt *, int); 70d4af9e69SDag-Erling Smørgrav void session_unused(int); 714f52dfbbSDag-Erling Smørgrav int session_input_channel_req(struct ssh *, Channel *, const char *); 724f52dfbbSDag-Erling Smørgrav void session_close_by_pid(struct ssh *ssh, pid_t, int); 73*f374ba41SEd Maste void session_close_by_channel(struct ssh *, int, int, void *); 744f52dfbbSDag-Erling Smørgrav void session_destroy_all(struct ssh *, void (*)(Session *)); 751ec0d754SDag-Erling Smørgrav void session_pty_cleanup2(Session *); 76a04a10f8SKris Kennaway 77545d5ecaSDag-Erling Smørgrav Session *session_new(void); 78545d5ecaSDag-Erling Smørgrav Session *session_by_tty(char *); 794f52dfbbSDag-Erling Smørgrav void session_close(struct ssh *, Session *); 80989dd127SDag-Erling Smørgrav void do_setusercontext(struct passwd *); 81cf2b5f3bSDag-Erling Smørgrav 82076ad2f8SDag-Erling Smørgrav const char *session_get_remote_name_or_ip(struct ssh *, u_int, int); 83076ad2f8SDag-Erling Smørgrav 84a04a10f8SKris Kennaway #endif 85