1*b21c0267Sdjm /* $OpenBSD: session.h,v 1.37 2023/01/06 02:39:59 djm Exp $ */ 2d4e7c603Sniklas 3607fba6cSderaadt /* 4a4d26d98Smarkus * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. 5607fba6cSderaadt * 6607fba6cSderaadt * Redistribution and use in source and binary forms, with or without 7607fba6cSderaadt * modification, are permitted provided that the following conditions 8607fba6cSderaadt * are met: 9607fba6cSderaadt * 1. Redistributions of source code must retain the above copyright 10607fba6cSderaadt * notice, this list of conditions and the following disclaimer. 11607fba6cSderaadt * 2. Redistributions in binary form must reproduce the above copyright 12607fba6cSderaadt * notice, this list of conditions and the following disclaimer in the 13607fba6cSderaadt * documentation and/or other materials provided with the distribution. 14607fba6cSderaadt * 15607fba6cSderaadt * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16607fba6cSderaadt * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17607fba6cSderaadt * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18607fba6cSderaadt * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19607fba6cSderaadt * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20607fba6cSderaadt * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21607fba6cSderaadt * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22607fba6cSderaadt * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23607fba6cSderaadt * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24607fba6cSderaadt * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25607fba6cSderaadt */ 26133a7928Smarkus #ifndef SESSION_H 27133a7928Smarkus #define SESSION_H 28133a7928Smarkus 2950c32c83Sprovos #define TTYSZ 64 3050c32c83Sprovos typedef struct Session Session; 3150c32c83Sprovos struct Session { 3250c32c83Sprovos int used; 3350c32c83Sprovos int self; 346d13e39aSdjm int next_unused; 3550c32c83Sprovos struct passwd *pw; 3650c32c83Sprovos Authctxt *authctxt; 3750c32c83Sprovos pid_t pid; 38ad3fdf1fSdjm int forced; 39c64ced71Sderaadt 4050c32c83Sprovos /* tty */ 4150c32c83Sprovos char *term; 4250c32c83Sprovos int ptyfd, ttyfd, ptymaster; 436c28c6bcSderaadt u_int row, col, xpixel, ypixel; 4450c32c83Sprovos char tty[TTYSZ]; 45c64ced71Sderaadt 4650c32c83Sprovos /* X11 */ 476c28c6bcSderaadt u_int display_number; 4850c32c83Sprovos char *display; 496c28c6bcSderaadt u_int screen; 5050c32c83Sprovos char *auth_display; 5150c32c83Sprovos char *auth_proto; 5250c32c83Sprovos char *auth_data; 5350c32c83Sprovos int single_connection; 54c64ced71Sderaadt 5550c32c83Sprovos int chanid; 566aa873e0Sdjm int *x11_chanids; 5750c32c83Sprovos int is_subsystem; 58adb7fae8Sdjm char *subsys; 59d7d07780Sdjm u_int num_env; 60e6440d8dSdjm struct { 61e6440d8dSdjm char *name; 62e6440d8dSdjm char *val; 63e6440d8dSdjm } *env; 6450c32c83Sprovos }; 6550c32c83Sprovos 667b28dfb0Sdjm void do_authenticated(struct ssh *, Authctxt *); 677b28dfb0Sdjm void do_cleanup(struct ssh *, Authctxt *); 68133a7928Smarkus 691b9280a0Smarkus int session_open(Authctxt *, int); 706d13e39aSdjm void session_unused(int); 717b28dfb0Sdjm int session_input_channel_req(struct ssh *, Channel *, const char *); 727b28dfb0Sdjm void session_close_by_pid(struct ssh *ssh, pid_t, int); 73*b21c0267Sdjm void session_close_by_channel(struct ssh *, int, int, void *); 747b28dfb0Sdjm void session_destroy_all(struct ssh *, void (*)(Session *)); 75b8b8936dSmarkus void session_pty_cleanup2(Session *); 764f9037ccSmarkus 7750c32c83Sprovos Session *session_new(void); 7850c32c83Sprovos Session *session_by_tty(char *); 797b28dfb0Sdjm void session_close(struct ssh *, Session *); 8050c32c83Sprovos void do_setusercontext(struct passwd *); 81c9017d5dSmarkus 821667b834Sdjm const char *session_get_remote_name_or_ip(struct ssh *, u_int, int); 831667b834Sdjm 84133a7928Smarkus #endif 85