monitor.h revision 226046
155682Smarkm/* $OpenBSD: monitor.h,v 1.16 2011/06/17 21:44:31 djm Exp $ */
2178825Sdfr
355682Smarkm/*
455682Smarkm * Copyright 2002 Niels Provos <provos@citi.umich.edu>
555682Smarkm * All rights reserved.
655682Smarkm *
755682Smarkm * Redistribution and use in source and binary forms, with or without
855682Smarkm * modification, are permitted provided that the following conditions
955682Smarkm * are met:
1055682Smarkm * 1. Redistributions of source code must retain the above copyright
1155682Smarkm *    notice, this list of conditions and the following disclaimer.
1255682Smarkm * 2. Redistributions in binary form must reproduce the above copyright
1355682Smarkm *    notice, this list of conditions and the following disclaimer in the
1455682Smarkm *    documentation and/or other materials provided with the distribution.
1555682Smarkm *
1655682Smarkm * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1755682Smarkm * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
1855682Smarkm * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
1955682Smarkm * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
2055682Smarkm * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
2155682Smarkm * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2255682Smarkm * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2355682Smarkm * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2455682Smarkm * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
2555682Smarkm * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2655682Smarkm */
2755682Smarkm
2855682Smarkm#ifndef _MONITOR_H_
2955682Smarkm#define _MONITOR_H_
3055682Smarkm
3155682Smarkmenum monitor_reqtype {
3255682Smarkm	MONITOR_REQ_MODULI, MONITOR_ANS_MODULI,
3355682Smarkm	MONITOR_REQ_FREE, MONITOR_REQ_AUTHSERV,
34178825Sdfr	MONITOR_REQ_SIGN, MONITOR_ANS_SIGN,
3555682Smarkm	MONITOR_REQ_PWNAM, MONITOR_ANS_PWNAM,
3655682Smarkm	MONITOR_REQ_AUTH2_READ_BANNER, MONITOR_ANS_AUTH2_READ_BANNER,
3755682Smarkm	MONITOR_REQ_AUTHPASSWORD, MONITOR_ANS_AUTHPASSWORD,
38102644Snectar	MONITOR_REQ_BSDAUTHQUERY, MONITOR_ANS_BSDAUTHQUERY,
39102644Snectar	MONITOR_REQ_BSDAUTHRESPOND, MONITOR_ANS_BSDAUTHRESPOND,
40102644Snectar	MONITOR_REQ_SKEYQUERY, MONITOR_ANS_SKEYQUERY,
4155682Smarkm	MONITOR_REQ_SKEYRESPOND, MONITOR_ANS_SKEYRESPOND,
42120945Snectar	MONITOR_REQ_KEYALLOWED, MONITOR_ANS_KEYALLOWED,
4355682Smarkm	MONITOR_REQ_KEYVERIFY, MONITOR_ANS_KEYVERIFY,
44178825Sdfr	MONITOR_REQ_KEYEXPORT,
4555682Smarkm	MONITOR_REQ_PTY, MONITOR_ANS_PTY,
4655682Smarkm	MONITOR_REQ_PTYCLEANUP,
4755682Smarkm	MONITOR_REQ_SESSKEY, MONITOR_ANS_SESSKEY,
4855682Smarkm	MONITOR_REQ_SESSID,
4955682Smarkm	MONITOR_REQ_RSAKEYALLOWED, MONITOR_ANS_RSAKEYALLOWED,
5055682Smarkm	MONITOR_REQ_RSACHALLENGE, MONITOR_ANS_RSACHALLENGE,
5155682Smarkm	MONITOR_REQ_RSARESPONSE, MONITOR_ANS_RSARESPONSE,
5255682Smarkm	MONITOR_REQ_GSSSETUP, MONITOR_ANS_GSSSETUP,
5355682Smarkm	MONITOR_REQ_GSSSTEP, MONITOR_ANS_GSSSTEP,
5455682Smarkm	MONITOR_REQ_GSSUSEROK, MONITOR_ANS_GSSUSEROK,
5555682Smarkm	MONITOR_REQ_GSSCHECKMIC, MONITOR_ANS_GSSCHECKMIC,
5655682Smarkm	MONITOR_REQ_PAM_START,
5755682Smarkm	MONITOR_REQ_PAM_ACCOUNT, MONITOR_ANS_PAM_ACCOUNT,
5855682Smarkm	MONITOR_REQ_PAM_INIT_CTX, MONITOR_ANS_PAM_INIT_CTX,
59178825Sdfr	MONITOR_REQ_PAM_QUERY, MONITOR_ANS_PAM_QUERY,
60178825Sdfr	MONITOR_REQ_PAM_RESPOND, MONITOR_ANS_PAM_RESPOND,
61178825Sdfr	MONITOR_REQ_PAM_FREE_CTX, MONITOR_ANS_PAM_FREE_CTX,
62178825Sdfr	MONITOR_REQ_AUDIT_EVENT, MONITOR_REQ_AUDIT_COMMAND,
63178825Sdfr	MONITOR_REQ_TERM,
64178825Sdfr	MONITOR_REQ_JPAKE_STEP1, MONITOR_ANS_JPAKE_STEP1,
65178825Sdfr	MONITOR_REQ_JPAKE_GET_PWDATA, MONITOR_ANS_JPAKE_GET_PWDATA,
66178825Sdfr	MONITOR_REQ_JPAKE_STEP2, MONITOR_ANS_JPAKE_STEP2,
67178825Sdfr	MONITOR_REQ_JPAKE_KEY_CONFIRM, MONITOR_ANS_JPAKE_KEY_CONFIRM,
68178825Sdfr	MONITOR_REQ_JPAKE_CHECK_CONFIRM, MONITOR_ANS_JPAKE_CHECK_CONFIRM,
6955682Smarkm};
7055682Smarkm
7155682Smarkmstruct mm_master;
72178825Sdfrstruct monitor {
73178825Sdfr	int			 m_recvfd;
7455682Smarkm	int			 m_sendfd;
7555682Smarkm	int			 m_log_recvfd;
7655682Smarkm	int			 m_log_sendfd;
7755682Smarkm	struct mm_master	*m_zback;
7855682Smarkm	struct mm_master	*m_zlib;
79178825Sdfr	struct Kex		**m_pkex;
80178825Sdfr	pid_t			 m_pid;
8155682Smarkm};
8255682Smarkm
83178825Sdfrstruct monitor *monitor_init(void);
84178825Sdfrvoid monitor_reinit(struct monitor *);
85178825Sdfrvoid monitor_sync(struct monitor *);
86178825Sdfr
87178825Sdfrstruct Authctxt;
8855682Smarkmvoid monitor_child_preauth(struct Authctxt *, struct monitor *);
89178825Sdfrvoid monitor_child_postauth(struct monitor *);
90178825Sdfr
91178825Sdfrstruct mon_table;
92178825Sdfrint monitor_read(struct monitor*, struct mon_table *, struct mon_table **);
9355682Smarkm
9455682Smarkm/* Prototypes for request sending and receiving */
9555682Smarkmvoid mm_request_send(int, enum monitor_reqtype, Buffer *);
96178825Sdfrvoid mm_request_receive(int, Buffer *);
97178825Sdfrvoid mm_request_receive_expect(int, enum monitor_reqtype, Buffer *);
98178825Sdfr
99178825Sdfr#endif /* _MONITOR_H_ */
100178825Sdfr