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