1*18de8d7fSPeter Avalos /* $OpenBSD: monitor.h,v 1.14 2006/03/25 22:22:43 djm Exp $ */ 2*18de8d7fSPeter Avalos 3*18de8d7fSPeter Avalos /* 4*18de8d7fSPeter Avalos * Copyright 2002 Niels Provos <provos@citi.umich.edu> 5*18de8d7fSPeter Avalos * All rights reserved. 6*18de8d7fSPeter Avalos * 7*18de8d7fSPeter Avalos * Redistribution and use in source and binary forms, with or without 8*18de8d7fSPeter Avalos * modification, are permitted provided that the following conditions 9*18de8d7fSPeter Avalos * are met: 10*18de8d7fSPeter Avalos * 1. Redistributions of source code must retain the above copyright 11*18de8d7fSPeter Avalos * notice, this list of conditions and the following disclaimer. 12*18de8d7fSPeter Avalos * 2. Redistributions in binary form must reproduce the above copyright 13*18de8d7fSPeter Avalos * notice, this list of conditions and the following disclaimer in the 14*18de8d7fSPeter Avalos * documentation and/or other materials provided with the distribution. 15*18de8d7fSPeter Avalos * 16*18de8d7fSPeter Avalos * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17*18de8d7fSPeter Avalos * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18*18de8d7fSPeter Avalos * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19*18de8d7fSPeter Avalos * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20*18de8d7fSPeter Avalos * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21*18de8d7fSPeter Avalos * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22*18de8d7fSPeter Avalos * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23*18de8d7fSPeter Avalos * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24*18de8d7fSPeter Avalos * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25*18de8d7fSPeter Avalos * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26*18de8d7fSPeter Avalos */ 27*18de8d7fSPeter Avalos 28*18de8d7fSPeter Avalos #ifndef _MONITOR_H_ 29*18de8d7fSPeter Avalos #define _MONITOR_H_ 30*18de8d7fSPeter Avalos 31*18de8d7fSPeter Avalos enum monitor_reqtype { 32*18de8d7fSPeter Avalos MONITOR_REQ_MODULI, MONITOR_ANS_MODULI, 33*18de8d7fSPeter Avalos MONITOR_REQ_FREE, MONITOR_REQ_AUTHSERV, 34*18de8d7fSPeter Avalos MONITOR_REQ_SIGN, MONITOR_ANS_SIGN, 35*18de8d7fSPeter Avalos MONITOR_REQ_PWNAM, MONITOR_ANS_PWNAM, 36*18de8d7fSPeter Avalos MONITOR_REQ_AUTH2_READ_BANNER, MONITOR_ANS_AUTH2_READ_BANNER, 37*18de8d7fSPeter Avalos MONITOR_REQ_AUTHPASSWORD, MONITOR_ANS_AUTHPASSWORD, 38*18de8d7fSPeter Avalos MONITOR_REQ_BSDAUTHQUERY, MONITOR_ANS_BSDAUTHQUERY, 39*18de8d7fSPeter Avalos MONITOR_REQ_BSDAUTHRESPOND, MONITOR_ANS_BSDAUTHRESPOND, 40*18de8d7fSPeter Avalos MONITOR_REQ_SKEYQUERY, MONITOR_ANS_SKEYQUERY, 41*18de8d7fSPeter Avalos MONITOR_REQ_SKEYRESPOND, MONITOR_ANS_SKEYRESPOND, 42*18de8d7fSPeter Avalos MONITOR_REQ_KEYALLOWED, MONITOR_ANS_KEYALLOWED, 43*18de8d7fSPeter Avalos MONITOR_REQ_KEYVERIFY, MONITOR_ANS_KEYVERIFY, 44*18de8d7fSPeter Avalos MONITOR_REQ_KEYEXPORT, 45*18de8d7fSPeter Avalos MONITOR_REQ_PTY, MONITOR_ANS_PTY, 46*18de8d7fSPeter Avalos MONITOR_REQ_PTYCLEANUP, 47*18de8d7fSPeter Avalos MONITOR_REQ_SESSKEY, MONITOR_ANS_SESSKEY, 48*18de8d7fSPeter Avalos MONITOR_REQ_SESSID, 49*18de8d7fSPeter Avalos MONITOR_REQ_RSAKEYALLOWED, MONITOR_ANS_RSAKEYALLOWED, 50*18de8d7fSPeter Avalos MONITOR_REQ_RSACHALLENGE, MONITOR_ANS_RSACHALLENGE, 51*18de8d7fSPeter Avalos MONITOR_REQ_RSARESPONSE, MONITOR_ANS_RSARESPONSE, 52*18de8d7fSPeter Avalos MONITOR_REQ_GSSSETUP, MONITOR_ANS_GSSSETUP, 53*18de8d7fSPeter Avalos MONITOR_REQ_GSSSTEP, MONITOR_ANS_GSSSTEP, 54*18de8d7fSPeter Avalos MONITOR_REQ_GSSUSEROK, MONITOR_ANS_GSSUSEROK, 55*18de8d7fSPeter Avalos MONITOR_REQ_GSSCHECKMIC, MONITOR_ANS_GSSCHECKMIC, 56*18de8d7fSPeter Avalos MONITOR_REQ_PAM_START, 57*18de8d7fSPeter Avalos MONITOR_REQ_PAM_ACCOUNT, MONITOR_ANS_PAM_ACCOUNT, 58*18de8d7fSPeter Avalos MONITOR_REQ_PAM_INIT_CTX, MONITOR_ANS_PAM_INIT_CTX, 59*18de8d7fSPeter Avalos MONITOR_REQ_PAM_QUERY, MONITOR_ANS_PAM_QUERY, 60*18de8d7fSPeter Avalos MONITOR_REQ_PAM_RESPOND, MONITOR_ANS_PAM_RESPOND, 61*18de8d7fSPeter Avalos MONITOR_REQ_PAM_FREE_CTX, MONITOR_ANS_PAM_FREE_CTX, 62*18de8d7fSPeter Avalos MONITOR_REQ_AUDIT_EVENT, MONITOR_REQ_AUDIT_COMMAND, 63*18de8d7fSPeter Avalos MONITOR_REQ_TERM 64*18de8d7fSPeter Avalos }; 65*18de8d7fSPeter Avalos 66*18de8d7fSPeter Avalos struct mm_master; 67*18de8d7fSPeter Avalos struct monitor { 68*18de8d7fSPeter Avalos int m_recvfd; 69*18de8d7fSPeter Avalos int m_sendfd; 70*18de8d7fSPeter Avalos struct mm_master *m_zback; 71*18de8d7fSPeter Avalos struct mm_master *m_zlib; 72*18de8d7fSPeter Avalos struct Kex **m_pkex; 73*18de8d7fSPeter Avalos pid_t m_pid; 74*18de8d7fSPeter Avalos }; 75*18de8d7fSPeter Avalos 76*18de8d7fSPeter Avalos struct monitor *monitor_init(void); 77*18de8d7fSPeter Avalos void monitor_reinit(struct monitor *); 78*18de8d7fSPeter Avalos void monitor_sync(struct monitor *); 79*18de8d7fSPeter Avalos 80*18de8d7fSPeter Avalos struct Authctxt; 81*18de8d7fSPeter Avalos void monitor_child_preauth(struct Authctxt *, struct monitor *); 82*18de8d7fSPeter Avalos void monitor_child_postauth(struct monitor *); 83*18de8d7fSPeter Avalos 84*18de8d7fSPeter Avalos struct mon_table; 85*18de8d7fSPeter Avalos int monitor_read(struct monitor*, struct mon_table *, struct mon_table **); 86*18de8d7fSPeter Avalos 87*18de8d7fSPeter Avalos /* Prototypes for request sending and receiving */ 88*18de8d7fSPeter Avalos void mm_request_send(int, enum monitor_reqtype, Buffer *); 89*18de8d7fSPeter Avalos void mm_request_receive(int, Buffer *); 90*18de8d7fSPeter Avalos void mm_request_receive_expect(int, enum monitor_reqtype, Buffer *); 91*18de8d7fSPeter Avalos 92*18de8d7fSPeter Avalos #endif /* _MONITOR_H_ */ 93