121e764dfSDag-Erling Smørgrav /* $OpenBSD: session.h,v 1.23 2004/07/17 05:31:41 dtucker 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; 34545d5ecaSDag-Erling Smørgrav struct passwd *pw; 35545d5ecaSDag-Erling Smørgrav Authctxt *authctxt; 36545d5ecaSDag-Erling Smørgrav pid_t pid; 37545d5ecaSDag-Erling Smørgrav /* tty */ 38545d5ecaSDag-Erling Smørgrav char *term; 39545d5ecaSDag-Erling Smørgrav int ptyfd, ttyfd, ptymaster; 40a82e551fSDag-Erling Smørgrav u_int row, col, xpixel, ypixel; 41545d5ecaSDag-Erling Smørgrav char tty[TTYSZ]; 42545d5ecaSDag-Erling Smørgrav /* X11 */ 43a82e551fSDag-Erling Smørgrav u_int display_number; 44545d5ecaSDag-Erling Smørgrav char *display; 45a82e551fSDag-Erling Smørgrav u_int screen; 46545d5ecaSDag-Erling Smørgrav char *auth_display; 47545d5ecaSDag-Erling Smørgrav char *auth_proto; 48545d5ecaSDag-Erling Smørgrav char *auth_data; 49545d5ecaSDag-Erling Smørgrav int single_connection; 50545d5ecaSDag-Erling Smørgrav /* proto 2 */ 51545d5ecaSDag-Erling Smørgrav int chanid; 52545d5ecaSDag-Erling Smørgrav int is_subsystem; 5321e764dfSDag-Erling Smørgrav int num_env; 5421e764dfSDag-Erling Smørgrav struct { 5521e764dfSDag-Erling Smørgrav char *name; 5621e764dfSDag-Erling Smørgrav char *val; 5721e764dfSDag-Erling Smørgrav } *env; 58545d5ecaSDag-Erling Smørgrav }; 59545d5ecaSDag-Erling Smørgrav 60ae1f160dSDag-Erling Smørgrav void do_authenticated(Authctxt *); 611ec0d754SDag-Erling Smørgrav void do_cleanup(Authctxt *); 62a04a10f8SKris Kennaway 63ae1f160dSDag-Erling Smørgrav int session_open(Authctxt *, int); 64ae1f160dSDag-Erling Smørgrav int session_input_channel_req(Channel *, const char *); 65ae1f160dSDag-Erling Smørgrav void session_close_by_pid(pid_t, int); 66ae1f160dSDag-Erling Smørgrav void session_close_by_channel(int, void *); 67545d5ecaSDag-Erling Smørgrav void session_destroy_all(void (*)(Session *)); 681ec0d754SDag-Erling Smørgrav void session_pty_cleanup2(Session *); 69a04a10f8SKris Kennaway 70545d5ecaSDag-Erling Smørgrav Session *session_new(void); 71545d5ecaSDag-Erling Smørgrav Session *session_by_tty(char *); 72545d5ecaSDag-Erling Smørgrav void session_close(Session *); 73989dd127SDag-Erling Smørgrav void do_setusercontext(struct passwd *); 74cf2b5f3bSDag-Erling Smørgrav void child_set_env(char ***envp, u_int *envsizep, const char *name, 75cf2b5f3bSDag-Erling Smørgrav const char *value); 76cf2b5f3bSDag-Erling Smørgrav 77a04a10f8SKris Kennaway #endif 78