monitor.h revision 181110
11573Srgrimes/* $OpenBSD: monitor.h,v 1.14 2006/03/25 22:22:43 djm Exp $ */ 21573Srgrimes 31573Srgrimes/* 41573Srgrimes * Copyright 2002 Niels Provos <provos@citi.umich.edu> 51573Srgrimes * All rights reserved. 61573Srgrimes * 71573Srgrimes * Redistribution and use in source and binary forms, with or without 81573Srgrimes * modification, are permitted provided that the following conditions 91573Srgrimes * are met: 101573Srgrimes * 1. Redistributions of source code must retain the above copyright 111573Srgrimes * notice, this list of conditions and the following disclaimer. 121573Srgrimes * 2. Redistributions in binary form must reproduce the above copyright 131573Srgrimes * notice, this list of conditions and the following disclaimer in the 141573Srgrimes * documentation and/or other materials provided with the distribution. 151573Srgrimes * 161573Srgrimes * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 171573Srgrimes * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 181573Srgrimes * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 191573Srgrimes * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 201573Srgrimes * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 211573Srgrimes * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 221573Srgrimes * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 231573Srgrimes * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 241573Srgrimes * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 251573Srgrimes * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 261573Srgrimes */ 271573Srgrimes 281573Srgrimes#ifndef _MONITOR_H_ 291573Srgrimes#define _MONITOR_H_ 301573Srgrimes 311573Srgrimesenum monitor_reqtype { 321573Srgrimes MONITOR_REQ_MODULI, MONITOR_ANS_MODULI, 331573Srgrimes MONITOR_REQ_FREE, MONITOR_REQ_AUTHSERV, 341573Srgrimes MONITOR_REQ_SIGN, MONITOR_ANS_SIGN, 351573Srgrimes MONITOR_REQ_PWNAM, MONITOR_ANS_PWNAM, 361573Srgrimes MONITOR_REQ_AUTH2_READ_BANNER, MONITOR_ANS_AUTH2_READ_BANNER, 3792986Sobrien MONITOR_REQ_AUTHPASSWORD, MONITOR_ANS_AUTHPASSWORD, 3892986Sobrien MONITOR_REQ_BSDAUTHQUERY, MONITOR_ANS_BSDAUTHQUERY, 391573Srgrimes MONITOR_REQ_BSDAUTHRESPOND, MONITOR_ANS_BSDAUTHRESPOND, 401573Srgrimes MONITOR_REQ_SKEYQUERY, MONITOR_ANS_SKEYQUERY, 411573Srgrimes MONITOR_REQ_SKEYRESPOND, MONITOR_ANS_SKEYRESPOND, 421573Srgrimes MONITOR_REQ_KEYALLOWED, MONITOR_ANS_KEYALLOWED, 431573Srgrimes MONITOR_REQ_KEYVERIFY, MONITOR_ANS_KEYVERIFY, 441573Srgrimes MONITOR_REQ_KEYEXPORT, 451573Srgrimes MONITOR_REQ_PTY, MONITOR_ANS_PTY, 461573Srgrimes MONITOR_REQ_PTYCLEANUP, 471573Srgrimes MONITOR_REQ_SESSKEY, MONITOR_ANS_SESSKEY, 481573Srgrimes MONITOR_REQ_SESSID, 491573Srgrimes MONITOR_REQ_RSAKEYALLOWED, MONITOR_ANS_RSAKEYALLOWED, 501573Srgrimes MONITOR_REQ_RSACHALLENGE, MONITOR_ANS_RSACHALLENGE, 511573Srgrimes MONITOR_REQ_RSARESPONSE, MONITOR_ANS_RSARESPONSE, 521573Srgrimes MONITOR_REQ_GSSSETUP, MONITOR_ANS_GSSSETUP, 531573Srgrimes MONITOR_REQ_GSSSTEP, MONITOR_ANS_GSSSTEP, 541573Srgrimes MONITOR_REQ_GSSUSEROK, MONITOR_ANS_GSSUSEROK, 551573Srgrimes MONITOR_REQ_GSSCHECKMIC, MONITOR_ANS_GSSCHECKMIC, 561573Srgrimes MONITOR_REQ_PAM_START, 571573Srgrimes MONITOR_REQ_PAM_ACCOUNT, MONITOR_ANS_PAM_ACCOUNT, 581573Srgrimes MONITOR_REQ_PAM_INIT_CTX, MONITOR_ANS_PAM_INIT_CTX, 591573Srgrimes MONITOR_REQ_PAM_QUERY, MONITOR_ANS_PAM_QUERY, 601573Srgrimes MONITOR_REQ_PAM_RESPOND, MONITOR_ANS_PAM_RESPOND, 611573Srgrimes MONITOR_REQ_PAM_FREE_CTX, MONITOR_ANS_PAM_FREE_CTX, 621573Srgrimes MONITOR_REQ_AUDIT_EVENT, MONITOR_REQ_AUDIT_COMMAND, 631573Srgrimes MONITOR_REQ_TERM 641573Srgrimes}; 65 66struct mm_master; 67struct monitor { 68 int m_recvfd; 69 int m_sendfd; 70 struct mm_master *m_zback; 71 struct mm_master *m_zlib; 72 struct Kex **m_pkex; 73 pid_t m_pid; 74}; 75 76struct monitor *monitor_init(void); 77void monitor_reinit(struct monitor *); 78void monitor_sync(struct monitor *); 79 80struct Authctxt; 81void monitor_child_preauth(struct Authctxt *, struct monitor *); 82void monitor_child_postauth(struct monitor *); 83 84struct mon_table; 85int monitor_read(struct monitor*, struct mon_table *, struct mon_table **); 86 87/* Prototypes for request sending and receiving */ 88void mm_request_send(int, enum monitor_reqtype, Buffer *); 89void mm_request_receive(int, Buffer *); 90void mm_request_receive_expect(int, enum monitor_reqtype, Buffer *); 91 92#endif /* _MONITOR_H_ */ 93